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);}
摘自白俊遥博客