Error number: MY-012739; Symbol: ER_IB_MSG_914; SQLSTATE: HY000
Message: %s
错误说明:
ER_IB_MSG_914是MySQL数据库中经常出现的错误,其错误代码是MY-012739。它是InnoDB的一个错误,表明表在存储过程期间没有正确地写入磁盘。
如果InnoDB表中的记录被破坏,可能出现ER_IB_MSG_914错误。可以在数据库日志中看到类似于以下内容的错误消息:“InnoDB: Error: Table ‘tablename’ not found in the InnoDB internal data dictionary. See http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how you can resolve the problem.”,实际上,这个错误可能表明表在尝试在工作内存中打开和更新之前并未写入回磁盘。
解决方法:
大多数情况下,为了恢复MySQL数据库,需要重建破坏的表。此外,应立即执行完整的备份,以防止未来的破坏。
1. 立即执行完整的备份
2. 删除造成问题的表
3. 将备份文件导入MySQL数据库
4. 尽可能增加MySQL服务器的可用性,如立即设置正确的日志文件大小,让服务器自动定期轮换日志文件,以及启用主从复制以减少系统停机时间。
5. 尝试使用Percona工具集中的pt-online-schema-change工具去修复数据库(它提供了使用“CREATE TABLE … SELECT”语句来改变表结构的选项)
如果上述步骤都不能有效地恢复数据库,则可能需要使用binlog恢复数据库。该过程需要一段时间才能执行完毕,但它可以保证最终完整性。