Specified key was too long; max key length is 767 bytes
这个报错是因为mysql的“字符串类型”(varchar、char等)字段作为索引时,有一个约束单个索引字段存储长度不能超过767字节。
按照表为utf8mb4字符集时,一个字符需要4个字节存储。那么最大定义索引前缀为 767/4=191.即字段a varchar(500)要建立索引时需要定义前缀索引 a(191),不能超过191的一个值。
其他utf8为3个字节存储一个字符,gbk为2个字节存储一个字符,依次类推得到对应字符串类型字段的前缀索引长度修正即可。
示例:add key
idx_xxx(content(120),type);
本文解释了MySQL中因单个索引字段存储长度超过767字节导致的错误,并给出了针对不同字符集(如utf8mb4、utf8、gbk)下字符串类型字段索引长度的修正方案。
2万+

被折叠的 条评论
为什么被折叠?



