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`))

2017年11月08日 Laravel 暂无评论 阅读 3,273 views 次

最近在使用Laravel5.5开发项目,但是发现执行php artisan migrate命令的时候报错了,报错如下图:

A8D5C49AFD7F402F1E8E89EF98B2E9F0

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

 

标签:

给我留言

Copyright © 严佳冬 保留所有权利.   Theme  Ality 百度地图 苏ICP备19045515号-2

用户登录

分享到: