Laravel中执行php artisan migrate 报错Syntax error or access violation: 1071 Specified key was too long;
·
- 具体报错信息
- Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table
usersadd uniqueusers_email_unique(email)) - user表的migartion,可以看出name字段并没有声明长度,laravel默认了1071,而报错中看出数据库设置了最大是767,所以就报错了
- Laravel中默认使用utf8mb4字符编码,而不是之前的utf8编码。mb4的最大字符长度为4个字节,解决方法是
需要手动配置迁移命令migrate生成的默认字符串长度
- 打开服务提供者 AuthServiceProvider, 在 boot 方法中加入如下代码:
- 调用Schema::defaultStringLength方法来实现配置
- App\Providers\AppServiceProvider
- 具体代码(记得头部引入Schema):
use Illuminate\Support\Facades\Schema;
/**
* Bootstrap any application services.
* 引导任何应用程序服务
* @return void
*/
public function boot()
{
// 767/4 = 191.75
Schema::defaultStringLength(191);
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)