MySQL Error number: MY-012445; Symbol: ER_IB_MSG_620; SQLSTATE: HY000

文档解释

Error number: MY-012445; Symbol: ER_IB_MSG_620; SQLSTATE: HY000

Message: %s

错误ER_IB_MSG_620的全称是Innodb Error Message 620,是由InnoDB数据库对表状态引起的错误。MySQL报错MY-012445,可以诊断为'InnoDB: Table

is in the middle of being imported’,表示数据库已经启动了进程,用于将一个表从备份中导入,但这个进程因为其他原因而失败了。

常见案例

典型的常见场景就是,在备份子过程之后,尝试恢复数据库时遇到该错误。另外,导致ER_IB_MSG_620错误的还有重新加载一个表(一般用于重写表结构)或者使用DISCARD TABLESPACE。

解决方法

修复ER_IB_MSG_620的错误,可以通过查找失败的表,然后停止 MySQL 并使用 rm 命令删除与该表有关的文件,然后再重新加载该备份表。

1)停止 mysqld 服务,使用 mysqld_safe 命令,例如:

mysqld_safe –skip-grant-tables

2)查找名为

的失败表,使用 find 命令,将其查找到所在的路径,例如:

find / -name

.ibd

3)停止 mysqld 服务,然后使用 rm 命令删除此文件,例如:

rm -f

.ibd

4)重新启动 mysqld 服务,可以使用 mysqld_safe 或者性能更强的 mysqld 命令,以常规方式运行MySQL,例如:

mysqld_safe

5)从备份中重新加载失败的表,通过 MySQL/MariaDB 客户端中的 SOURCE 命令,例如:

SOURCE

6)确保错误消失,可以使用 SHOW INNODB STATUS 命令检查是否有其他ER_IB_MSG_620错误:

SHOW INNODB STATUS;

故障解决后,可以使用mysqlcheck来检查数据库:

mysqlcheck -uusername -ppassword –check –optimize –all-databases

最后,检查innodb的数据文件,以确保映射到原表:

SELECT TABLE_NAME, SPACE FROM INNODB_TABLESPACES ORDER BY SPACE;

你可能感兴趣的