MySQL Error number: MY-011889; Symbol: ER_IB_MSG_64; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-011889; Symbol: ER_IB_MSG_64; SQLSTATE: HY000
Message: %s
错误名称: ER_IB_MSG_64
错误代码: MY-011889
SQLSTATE: HY000
错误说明:
ER_IB_MSG_64错误是InnoDB引擎在创建索引时碰到的一个错误。该错误属于MySQL,它表示在创建字符串字段适当索引时插入的字节数超出了64的限制。
常见案例
该错误通常发生在创建一个新表时,因为在MySQL中,创建表时若涉及字符串字段,MySQL也会自动为其创建索引。比如当一个CHAR(5)的字段尝试创建一个索引时,MySQL就会触发该错误。
解决方法:
案例中提到的情况是由于尝试索引字符串类型时其字节数超出限制导致的,因此主要的解决办法是减少字段字节数,从而避免超出索引限制。
除此之外,还可以使用MySQL提供的MyISAM支持的全文索引的办法,可以避免ER_IB_MSG_64的发生。此外,MySQL 8.0.22和更高版本用户也可以使用InnoDB的full-text索引功能,这样也可以规避这个问题。
另外,用户还可以考虑使用一对字符串(比如varchar)字段来代替单个字符串字段,因为每个字段的字节长度都可以低于64字节,从而避免ER_IB_MSG_64错误。最后,用户可以考虑使用NO_AUTO_VALUE_ON_ZERO和NO_BIG_SEGMENTS特性,以允许字符串更长的索引。