Error number: MY-010876; Symbol: ER_INNODB_UNREGISTERED_TRX_ACTIVE; SQLSTATE: HY000
Message: Transaction not registered for MySQL 2PC, but transaction is active
错误说明
ER_INNODB_UNREGISTERED_TRX_ACTIVE错误号为MY-010876,MySQL的SQLSTATE代码为HY000,这表示一个未注册的InnoDB事务正在运行,导致MySQL无法完成当前查询。
常见案例
这个错误通常发生在使用InnoDB引擎ITable时,MySQL服务器发现未注册的事务。该错误可能是由于如下情况引起的:
1. 当MySQL发现一个它未清理的事务时,该错误可能会发生;
2. 当用户试图访问以外磁盘上的事务时,也可能出现此错误;
3. 在试图对ITable进行重建时也可能出现该错误。
解决方法
此错误通常可以通过重启MySQL服务器来解决,但是请注意备份数据库或至少明确表的元数据,以防万一发生错误。如果重启MySQL服务器不起作用,则可以尝试以下解决方案:
1. 强制停止发现的事务:可以使用KILL TRANSACTION命令强制终止InnoDB事务;
2. 使用合理的选项,将表重建:用户可以使用选项OPEN_FILES,一次性复制多个表,重新建立表;
3. 恢复正确的备份:用户需要小心地备份正确的数据,并利用备份数据恢复表。