Laravel 5.4 php artisan migrate 提示表已经存在

在数据库没有任何表的情况下执行

php artisan migrate

clipboard.png

执行后数据库里面只会存在连个表:migrations、users

再次执行

php artisan migrate

clipboard.png

数据库里不会有任何的新增。求解。

回复
阅读 3.7k
2 个回答

clipboard.png
索引的长度超过了mysql的限制,在migrate之前,设置

$table->string('email' , 32)->index();
$table->string('token' , 128)->index();

或者更小...

这是因为 5.4 默认使用了utf8mb4 字符集, 在 MySQL / MariaDB .

https://laravel.com/docs/5.4/migrations#indexes

只要安装文档中的示例修改就好了.

在 AppServiceProvider.php, boot方法中, 调用 Schema::defaultStringLength 方法


// AppServiceProvider.php


use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

顺便, 你也可以开启数据库的 innodb_large_prefix 配置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏