Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

问题

laravel php artisan migrate遇到 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

$ php artisan migrate

In Connection.php line 664:

  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `roles` add unique `roles_name_unique`(`name`))


In PDOStatement.php line 119:

  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes


In PDOStatement.php line 117:

  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
  

解决

在app/Providers/AppServiceProvider.php文件并在boot方法内设置默认字符串长度:

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

原因

Laravel 5.4对默认数据库字符集进行了更改,现在utf8mb4它包含了对存储表情符号的支持
参考https://laravel-news.com/laravel-5-4-key-too-long-error

猜你喜欢

转载自blog.csdn.net/xlmmsby/article/details/85326379