MySQL Error number: MY-012803; Symbol: ER_IB_MSG_978; SQLSTATE: HY000

文档解释

Error number: MY-012803; Symbol: ER_IB_MSG_978; SQLSTATE: HY000

Message: %s

错误ER_IB_MSG_978的全称为ER_INDEX_CORRUPT,是MySQL的一类错误,提示用户InnoDB索引被损坏了,MySQL会返回一个HY000的SQLSTATE码,表明该错误来自InnoDB。

错误ER_IB_MSG_978一般由以下三种情况引起:

1.软件数据库出现错误:当数据库在不正常的情况下崩溃,如系统死机、断电等,导致数据库被意外终止,索引就会受到破坏;

2.硬件故障:如磁盘文件错误,文件系统崩溃等情况,可能会破坏InnoDB的索引文件;

3.InnoDB系统错误:如InnoDB的检查点错误,主备差异,以及InnoDB系统中出现的各种bug。

一般处理方法及步骤

1.更改表空间文件:

对于软件错误、硬件故障和InnoDB系统错误等情况,应首先下载最新的MySQL安装包,其次从上次正常备份中恢复表空间文件到最新的MySQL安装包中,最后重新启动MySQL,让其完成检测和表空间更新。

2.修复InnoDB索引:

下载安装Percona Toolkit(PT),使用PT的pt-table-checksum对表进行校验,检查表的一致性;使用pt-online-schema-change程序更新表,做表的优化,按照要求处理问题。

你可能感兴趣的