🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Laravel 5.4 把默认数据库字符集更改成 utf8mb4,作为对存储 emojis 的支持。只要你运行的是 MySQL v5.7.7 及更高版本,那么你就不会出现本文提到的错误。 对于那些运行 MariaDB 或旧版本的 MySQL 的程序,可能会在尝试运行迁移时遇到下面的错误: ~~~ [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 bytes ~~~ 如 Laravel 5.4 中关于迁移的文档,你要做的是编辑AppServiceProvider.php文件,并在boot方法内设置默认字符串的长度: ~~~ use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } ~~~ 然后,就没然后了。 `Schema::defaultStringLength(191);`是设置好的默认的字符串长度,也就是说,迁移中的字段没有设置长度的话,varchar字段会被默认成长度只有 191 哦!