Laravel 5.4 数据库迁移错误

当你执行 php artisan migrate 你会发现 surprise

Laravel 5.4 数据库迁移错误_第1张图片
why

Laravel 5.4改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持。

错误

 [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`))

解决方案

  • 第一种
    编辑AppServiceProvider.php文件,设置默认字符串长度
use Illuminate\Support\Facades\Schema;
public function boot()
{
    Schema::defaultStringLength(191);
}
  • 第二种
    通常使用 mysql or mariadb 数据库才会出现这种问题,数据库版本应满足 ** mysql > 5.7.7 or mariadb > 10.2.2 **,升级数据库同时更改字符集编码
    我的数据库配置文件内容
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

这样一切都应该正常工作。

你可能感兴趣的:(Laravel 5.4 数据库迁移错误)