MySQL Error number: MY-013060; Symbol: ER_IB_MSG_1235; SQLSTATE: HY000

文档解释

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. 最后,可以考虑重新创建表和索引。

你可能感兴趣的