博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
laravel5.7 migrate 时报错 Specified key was too long error 解决方案
阅读量:6234 次
发布时间:2019-06-21

本文共 546 字,大约阅读时间需要 1 分钟。

今天在数据迁移时突然报了 Specified key was too long error 的错,解决掉之后就把这个问题记录下来。

报错原因

Laravel 5.4 +  默认使用 utf8mb4 字符编码,之前使用的是 utf8 编码

我mysql数据库使用的是 utf8 编码,支持的最大字符长度为3字节,如果遇到4字节的宽字符就会出现插入异常。

注意:三个字节 utf8 最大能编码的 Unicode 字符是 0xffff ,即Unicode中的基本多文种平面(BMP)。因而包括Emoji表情(Emoji是一种特殊的Unicode编码)在内的非基本多文种平面的Unicode字符都无法使用 MySql 的 utf8 字符集存储。

 解决方案:

  1. 升级MySql版本到5.5.3+ ,因为从MySql 5.5.3 开始才支持 utf8mb4 字符编码。将字符编码设置为utf8mb4。
  2. 手动配置迁移命令 migrate 生成的默认字符串长度,在 AppServiceProviderboot 方法中添加如下代码:
Schema::defaultStringLength(191);

转载于:https://www.cnblogs.com/weiyalin/p/10385434.html

你可能感兴趣的文章
封装定制的Kali Live ISO
查看>>
Oracle日常维护脚本
查看>>
Android中Handler引起的内存泄露
查看>>
maven的安装和使用
查看>>
Vue技巧小结(持续更新)
查看>>
Linux下编译软件时指定安装目录的好处
查看>>
java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)...
查看>>
[问题]apparmor 问题导致mysql切换datadir目录失败
查看>>
2012 使用XEvent sqlserver.blocked_process_report检测阻塞
查看>>
菜鸟学C:猜数字
查看>>
网络管理经验谈:网络不通的解决之道
查看>>
认识Microsoft Hyper-V Server
查看>>
ASP.NET中,“没有为该对象定义无参数的构造函数”的错误
查看>>
回收站(recyclebin)引发row cache lock
查看>>
nagios安装配置pnp4nagios-0.6
查看>>
VMware vSphere 5.1 群集深入解析(七)
查看>>
SQL Server 黑盒跟踪 -- 进一步了解sqldiag
查看>>
banner和背景的说明
查看>>
redhat6 + 11G RAC 双节点部署
查看>>
使用Handy Backup 6.2进行数据备份与还原(多图)
查看>>