Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes 错误分析

报错原因:

如果使用的是utf8mb4,并且在长度超过191个字符的varchar列上有唯一索引,因为utf8mb4需要比utf8或latin1更多的存储空间。如果启用innodb_large_prefix(默认值),则对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀限制为3072个字节。如果innodb_large_prefix被禁用,则任何行格式的表的索引键前缀限制为767字节。

解决办法

方法一、打开innodb_large_prefix以允许索引中的较大列。
方法二、设置有唯一索引varchar列字符串长度为191

注意

MySQL 5.7.7 默认启用innodb_large_prefix,Innodb_large_prefix,在MySQL 5.7.7中已弃用,并将在未来版本中删除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章