Laravel 5.4 数据库迁移错误

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • MySQL数据库对象与应用 2.1-MySQL数据类型 库建立好之后基本不动,和我们接触最频繁的是表. 建表就是声...
    极客圈阅读 6,514评论 0 8
  • 1.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。My...
    黄花菜已凉阅读 10,024评论 3 60
  • 一日一诗,一景一诗,用诗歌描绘翠湖的美、苍山的峻、大滚锅的热浪、黄果树的飞瀑景;用诗歌抒发儿时伙伴相约自驾的...
    龙凤来阅读 4,200评论 0 1
  • 今天陪孩子去三年级八班报名,我看到自己的磨蹭。直到进入教学楼,我在三楼没寻找到教室时,感受到紧张,在四楼继续找,我...
    紫烟_3cfc阅读 1,022评论 0 0

友情链接更多精彩内容