Error number: MY-012425; Symbol: ER_IB_MSG_600; SQLSTATE: HY000
Message: %s
错误说明
MySQL ER_IB_MSG_600错误是一种Innodb表空间错误,表示更新Innodb表时发生错误。它是Innodb内部常规检查失败的一种形式,其原因可能是Innodb表空间受到损坏,或者是表空间启动时发生内部错误。
常见案例
MySQL ER_IB_MSG_600错误可能在向Innodb表添加索引时发生,或者在使用根据唯一索引创建表时发生错误,可能有以下之类的错误消息:
“Table ‘tbl’ does not exist”
“InnoDB: Error (1206) Data dictionary has no index named ‘xxx’”
“InnoDB: Error: (27) File ‘./database_name/table_name.ibd ‘not found (Errno: 13)”
解决方法
在以上情况下,需要检查一下客户端不向Innodb表添加索引或创建表,也开始查看MySQL InnoDB 日志中的数据状态相关的控制命令,如 innodb_status、 innodb_log_file、 innodb_log_files_in_group等,可以使用 show variables; 来查看变量定义。查看日志后,我们可以尝试拷贝ibdata1文件和表文件,重新导入拷贝,并检查Innodb表文件是否完整。
如果上述方法都失败了,那么我们可以尝试改变Mysql配置文件中的数据字典,将“innodb_dict_size”的默认设置由8M改为256M,之后重新启动Mysql服务即可解决错误。另外,如果服务器不能自行修复,则可以打开Mysql高数据库保护模式,启动Mysql服务将其自行修复innodb file-per-table表空间。