A-A+
Laravel5.5执行php artisan migrate 报错Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us ers_email_unique`(`email`))
最近在使用Laravel5.5开发项目,但是发现执行php artisan migrate命令的时候报错了,报错如下图:
Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us ers_email_unique`(`email`))
我本地机子的mysql版本是5.6.30.
user表的migartion,可以看出name字段并没有声明长度,laravel默认了1071,而报错中看出数据库设置了最大是767,所以就报错了
Laravel 5.5默认使用utf8mb4
字符编码,而不是之前的utf8
编码。mb4的最大字符长度为4个字节,解决方法是
手动配置迁移命令migrate生成的默认字符串长度,在AppServiceProvider中调用Schema::defaultStringLength方法来实现配置:
use Illuminate\Support\Facades\Schema; /** * Bootstrap any application services. * * @return void */ public function boot() { // 767/4 Schema::defaultStringLength(191); }