laravel 1071 Specified key was too long 错误

laravel 5.4 以后默认使用 utf8mb4 字符集;

utf8mb4 主要是用来支持 emoji 表情的;
如果你的本地环境中的 mysql 低于5.7.7;
为了防止在以后使用的过程中报如下错误;

[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 users add unique users_email_unique(email))[PDOException]SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytesBash

需要找到 config/database.php 文件中的 mysql ;
修改 charset、collation为utf8;

'charset' => 'utf8','collation' => 'utf8_unicode_ci',PHP


这样做的后果就是不能在数据库直接存 emoji 表情了;
如果说你就是想在数据库中存 emoji 表情;
那还有一种方案;
找到 appProvidersAppServiceProvider.php 文件;
先 use Schema;

use Illuminate\Support\Facades\Schema;PHP

在 boot 中添加如下代码;

public function boot(){
    Schema::defaultStringLength(191);}

摘自白俊遥博客

发表回复

您的电子邮箱地址不会被公开。