Error number: MY-012012; Symbol: ER_IB_MSG_187; SQLSTATE: HY000
Message: %s
错误说明:
MySQL错误MY-012012和SQLSTATE HY000表示ER_IB_MSG_187错误,这个错误是存储引擎层面的错误,其错误信息表明由于无效的索引导致内部表结构损坏而引发的mysql错误。这个错误可以由将不合法的MYSQL数据类型或非法值添加到表的列中所引起,因此引起的内部表结构损坏而产生以上异常,“ER_IB_MSG_187”通常伴随着“Row size too large”错误。
出现这个错误最常见的表现是执行INSERT或UPDATE时出现“Row size too large”错误,为了解决此问题,你必须检查内部表中的字段,看哪些字段数据类型是否有明显的规律性,通过查询MYSQL的two bytes的数据类型。如果有任何冗余的字段,或占用空间超过一行的极限,就会发生这个错误,系统会阻止将无效的数据添加到表中。
解决方法:
解决这个错误的一种办法是按照规范重新设计表结构,将不必要的字段删除,合理设置字段大小和数据类型,以便列值不会超过行字节大小。此外,可以检查索引是否有一些不必要的值,而不是MySQL支持的索引类型,如果没有有效的索引,则可以考虑将索引作为表中不合理列或冗余列处理,以决定未来是否要创建索引。最后,确定表的引擎类型,以及该表中存储的数据是否符合引擎限制,以免出现错误。