MySQL Error number: MY-012972; Symbol: ER_IB_MSG_1147; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: MY-012972; Symbol: ER_IB_MSG_1147; SQLSTATE: HY000

Message: Tablespace size stored in header is %lu pages, but the sum of data file sizes is %lu pages

错误说明

ER_IB_MSG_1147 代表不兼容的InnoDB表配置参数出现了更改,导致InnoDB表出现故障。若出现该问题,MySQL就会抛出一条错误消息,该错误消息为:ER_IB_MSG_1147:Incompatible key or row definition between the MariaDB .frm file and the InnoDB data dictionary.

常见案例

1. 一些在MySQL数据库中,添加,删除,修改表或字段时会导致ER_IB_MSG_1147错误,如对表添加或修改索引;

2. 升级InnoDB引擎时出现ER_IB_MSG_1147错误,可能是升级后使用新的引擎定义时发生冲突;

3. 语句中明明参照的表没有更改,但是多次执行同样语句出现了ER_IB_MSG_1147错误,可能是字段数据类型依然发生了冲突引起。

解决方法

1. 在MySQL数据库中对表的添加、删除或修改操作时,应该充分考虑兼容性,在改变表定义时,应以MyISAM操作解决 ER_IB_MSG_1147 错误;

2. 检查数据库表是否存在记录,若不存在记录则需先建立记录,再检查是否出现ER_IB_MSG_1147 错误;

3. 在升级InnoDB引擎前,需先彻底检查表的完整性,使其达到MySQL推荐的完整性标准,否则在升级后可能会出现ER_IB_MSG_1147 错误;

4. 在数据库迁移时,应先检查使用是否兼容MySQL 规定的数据库列定义,避免多次重复执行语句出现 ER_IB_MSG_1147 错误;

5. 另外,MySQL也提供了REPAIR TABLE命令可以自动修复出现ER_IB_MSG_1147 错误的表结构,但在操作MySQLREPAIR TABLE命令前,建议备份表结构或者整个数据库,防止意外发生回滚问题。


数据运维技术 » MySQL Error number: MY-012972; Symbol: ER_IB_MSG_1147; SQLSTATE: HY000 报错 故障修复 远程处理