Error number: MY-012245; Symbol: ER_IB_MSG_420; SQLSTATE: HY000
Message: %s
错误说明
MySQL 错误 MY-012245(ER_IB_MSG_420)属于 InnoDB 存储引擎的错误,表示『在执行 InnoDB 时出现意外的情况』。
常见案例
在表创建过程中,触发 ER_IB_MSG_420:
> CREATE TABLE customers (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(50), tel_no VARCHAR(50), PRIMARY KEY (id);
MySQL 日志文件中出现 ER_IB_MSG_420:
[ERROR in innodb_data_dict.cc line 2605] Innodb encountered an unexpected situation error 420
解决方法
尽管 ER_IB_MSG_420 的出现代表着 InnoDB 无法正常工作,它并不能确保数据安全,因此建议优先确认数据安全性,之后再执行修复。
1. 尽快备份数据
确保没有受到影响的 MySQL 服务器,检查是否有未提交的事务,以及备份数据库:
# mysqldump -u username -p databasename > dump.sql
2. 清理不必要的日志数据
删除现存的 ib_logfile* 日志文件:
# rm ib_logfile*
3. 重新创建日志文件
重新创建 ib_logfile* 日志文件:
# innodb_log_recreate
4. 重启 MySQL
在执行重建前,最好确保已经重启 MySQL 服务:
# service mysql restart
5. 重新创建 InnoDB
在检查 ib_logfile* 这些文件是完备的之后,执行重建:
# innodb_force_recovery
重新创建步骤可能需要一段时间,但是只要这个过程正常完成,就能解决掉 MY-012245(ER_IB_MSG_420)这个错误。