Error number: MY-012951; Symbol: ER_IB_MSG_1126; SQLSTATE: HY000
Message: %s
错误说明:
MySQL的错误代码MY-012951,表示“ER_IB_MSG_1126: The data directory exists, but the InnoDB data dictionary is missing.”(数据目录存在,但是InnoDB数据字典缺失)。 这意味着InnoDB的文件ibdata不存在或者损坏。
此错误通常发生在对InnoDB进行重大更改或移动之后,例如将数据库服务器重新配置为从其他服务器上复制内容时,或者在将MySQL从一台服务器迁移到另一台服务器之后等等,其他原因还包括数据字典文件ibdata1被删除或损坏,启动过程中,innodb_force_recovery参数值设置的太高,服务器可能无法正常启动,并显示错误MY-012951;MySQL会禁止执行其他操作,直到InnoDB数据字典缺失的问题得到解决。
解决方法:
1、检查MySQL ibdata文件是否存在或损坏。 如果ibdata文件存在且有效,则跳转到第2点;否则,尝试恢复ibdata文件,例如通过从备份中恢复或重新创建等。
2、保证 MySQL 状态是活动状态。
3、尝试通过将innodb_force_recovery参数值设置为3或更低来修复InnoDB数据字典。
4、试图在安全模式下重新启动MySQL服务。 在安全模式下重新启动后,检查是否会根据 InnoDB 限制恢复 MySQL 服务,同时查看是否会发现数据字典文件ibdata1。
5、检查是否需要升级InnoDB版本,确保InnoDB版本与MySQL 版本兼容。
6、尝试手动更改导致错误的参数值,例如,在MySQL 中启用 InnoDB 参数。
7、如果所有以上都不起作用,则更新MySQL的安装文件,清除数据库,重新安装MySQL,然后重新导入数据。