Error number: MY-012815; Symbol: ER_IB_MSG_990; SQLSTATE: HY000
Message: %s
错误说明
MySQL错误代码MY-012815对应错误代码ER_IB_MSG_990,消息为HY000,该错误表示检查索引长度出错。该错误消息通常在使用Innodb存储引擎时出现,其他存储引擎不会出现此错误。
常见案例
该错误一般出现在然执行create index on table时产生的,该错误表明创建的索引表长度超过了MySQL的限制。一般来说,MySQL支持索引最大长度为767字节,如果搜索的字段的字节长度超过这一限制,MySQL将会抛出该错误。
解决方法
1.修改索引
检查搜索字段的长度是否超过了767字节,如果超过了则尝试将搜索字段减少到比767字节短,重新创建表索引。这样可以避免该错误的产生。
2. 更换存储引擎
在MySQL 8.0以后,MySQL 会使用新引擎Innodb cluster,该引擎支持长度更长的索引。如果非要使用超过767字节的索引,可以考虑尝试更换存储引擎,使用新的Innodb cluster来替换旧的Innodb。
3.增加索引分析器
将表的长度调整为小于索引长可能无法解决该问题,如果非要使用超过767个字节的索引,可以考虑使用增加索引分析器,可以想办法将原来超过767字节的索引变为小于767字节,这样就可以避免该错误的发生。
总结
MySQL错误代码MY-012815对应的错误信息ER_IB_MSG_990的HY000,它表示检查索引长度出错,出现此错误通常是因为索引长度超过了MySQL的限制,MySQL支持的索引最大长度为767字节,解决此错误的办法有:修改索引,将搜索字段减少到不超过767字节;更换存储引擎,使用MySQL 8.0以后支持更长索引的Innodb cluster;增加索引分析器,将原来超过767字节的索引变为小于767字节。