Error number: MY-012546; Symbol: ER_IB_MSG_721; SQLSTATE: HY000
Message: Recovery skipped, –innodb-read-only set!
MY-012546; ER_IB_MSG_721; HY000 错误
错误说明
MySQL的MY-012546; ER_IB_MSG_721; HY000错误是当使用InnoDB引擎时出现的一种常见错误,由于SQL syntax错误或在索引定义中出现重复索引引起,用户会收到一个报错。
常见案例
该错误的常见原因是,用户正在尝试创建一个已经存在的索引。例如,假设某个表中有一个叫ADDINDEX的索引,但是用户会尝试通过以下命令再次创建相同名字的索引:
ALTER TABLE table_name ADD INDEX ADDINDEX (column_name);
此时,用户会收到以下错误:
Error Code: MY-012546; ER_IB_MSG_721; SQLSTATE: HY000
解决方法
要避免此错误,用户可以更改索引的名称,以免与现有索引的名称重复。例如,上面命令可以更改为:
ALTER TABLE table_name ADD INDEX ADDINDEX1 (column_name);
此外,用户可以使用以下命令删除已有的索引:
ALTER TABLE table_name DROP INDEX index_name;
另外,用户也可以使用以下命令检查表中是否存在重复索引:
SELECT INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = ‘TableName’;
总而言之,要解决这个错误,用户需要检查是否存在重复索引,然后确保提交的SQL语句中索引的命名正确。