Mysql数据库中在为一些字段创建索引时,有时遇到E异常。
异常“-Specifiedkeywastoolong;maxkeylengthisbytes”
造成上述错误的原因:
创建索引的字段字节长度超出了最大长度限制字节。
不同字符集、引擎下的对应的字符长度不同。
Innodb引擎下,最大长度限制为字节
latin1:1字符对应1字节,/1=
GBK:1字符对应2字节,/2=
UTF8:1字符对应3字节,/3=
UTF8mb4:1字符对应4字节,/4=
MyISAM引擎下,长度限制为字节
解决方案:
增加最大长度限制innodb_large_prefix=on单列最大长度限制为字节减少字段长度设置根据限制长度,调整需要索引的列的字符长度增加索引长度条件创建索引时,指定长度,但可能会损失索引精准度CREATEINDEXindex_nameONtable_name(column_name(length))导图总结:
E问题总结