A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 上海分校-小影 于 2018-3-23 14:18 编辑

Laravel 5.4 migrate时报错: Specified key was too long error。具体报错信息为:
Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes。

问题根源是MySql支持的utf8编码最大字符长度为3字节,当遇到4字节的宽字符就会出现插入异常。三个字节UTF-8最大能编码的Unicode字符是0xffff,即Unicode中的基本多文种平面(BMP)。因而包括Emoji表情(Emoji是一种特殊的Unicode编码)在内的非基本多文种平面的Unicode字符都无法使用MySql的utf8字符集存储。Laravel 5.4中的配置文件database.php中关于字符集的配置信息为:'charset' => 'utf8mb4',还有'collation' => 'utf8mb4_unicode_ci',需要改为:'charset' => 'utf8',还有'collation' => 'utf8_unicode_ci',就是将其中的mb4去掉,这是解决方案之一。当然,还有别的方法。

3 个回复

倒序浏览
奈斯,优秀
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马