黑马程序员技术交流社区

标题: 【上海校区】Laravel 5.4 migrate时报错: Specified key was too long error [打印本页]

作者: 为热爱挥汗    时间: 2018-3-23 09:48
标题: 【上海校区】Laravel 5.4 migrate时报错: Specified key was too long error
本帖最后由 上海分校-小影 于 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去掉,这是解决方案之一。当然,还有别的方法。
作者: 不二晨    时间: 2018-7-18 11:23
奈斯,优秀
作者: 吴琼老师    时间: 2018-7-18 14:34

作者: 摩西摩西OvO    时间: 2018-7-26 09:48





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2