Error number: MY-013060; Symbol: ER_IB_MSG_1235; SQLSTATE: HY000
Message: %s
错误说明
MY-013060 ER_IB_MSG_1235 的MySQL错误表明操作失败,可能是因为表被其他会话锁定,或者索引不存在,无法访问。该错误具有SQLSTATE值HY000,消息是“InnoDB: 1235错误发生了,不能为表的的 InnoDB索引进行操作2。” 该错误是InnoDB系列错误的一部分,并被MySQL看作是普通错误,与系统错误区分开来。
常见案例
使用多个会话运行时,此错误的发生较为常见。当使用类似于以下语句更新表或者索引时,可能会出现此错误:UPDATE my_table SET my_column=my_value WHERE my_table_id=my_id;
此外,当使用MySQL创建表或索引时,如果表内发现有同名索引已存在,会再次引发此错误。
解决方法
1. 检查表是否受到其他会话的锁定,如果是的话,则使用SHOW使用的语句来检查它们。
2. 仔细检查表名和索引名,确保它们唯一并正确。
3. 使用SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS获取表的
4. 使用SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEX_STATS来检查某个表的特定索引以检查其是否存在。
5. 使用ALTER TABLE … RENAME更改表的名称。
6. 考虑增加临时表,以及索引属性(比如唯一性),它们可以避免重复索引的出现。
7. 将表和索引分离,分为不同的表和索引,以N开头的列可以作为关联列使用。
8. 最后,可以考虑重新创建表和索引。