文档解释
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;