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

Junchi
  • 22

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

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();

或者更小...

gclove
  • 1.4k

这是因为 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 配置

宣传栏