Error number: MY-012689; Symbol: ER_IB_MSG_864; SQLSTATE: HY000
Message: %s
MySQL Error Number MY-012689 (ER_IB_MSG_864):
错误说明:
MySQL的ER_IB_MSG_864错误会提示“InnoDB:在创建表 ‘%s’ 时发生坏的 MySQL 内部消息。”,它意味着有一个严重的MySQL服务器内部错误已经发生,而InnoDB又无法处理它。这也是一个常见的MySQL错误,通常会在执行某些可能对表结构和数据存储空间造成影响的操作时出现,例如CREATE/DROP TABLE,LOAD DATA INFILE,ALTER TABLE,OPTIMIZE TABLE等。
ER_IB_MSG_864错误一般会在执行下述操作时发生:
1. 对数据表结构进行更改,例如ALTER TABLE;
2. 使用LOAD DATA INFILE语句导入文件,并分隔字段;
3. 尝试创建新表;
4. 尝试删除现有表;
5. 用OPTIMIZE TABLE语句进行分析;
6. 更改表的编码集;
7. 打开表文件失败;
8. 因系统错误而打开表文件失败;
9. 因文件操作错误而打开表文件失败;
10. 使用MySQL来读取InnoDB表;
11. 用InnoDB存储引擎创建表;
12. 用CHECK TABLE语句检查表的完整性;
13. 使用SELECT INTO OUTFILE语句从表中取出数据;
14. 使用Statistics和Flush Tables等命令;
15. 使用CHARSET CONVERT TO将二进制数据从一个字符集转换为另一个字符集;
16. 在MySQL服务器上备份或还原数据库;
17. 用MySQL REPAIR语句修复表;
18. 在InnoDB表上运行UPDATE语句。
解决方法:
1. 检查MySQL服务器日志以查找可能引起此错误的操作是什么,以便提供正确的SQL语句尝试解决此问题;
2. 检查MySQL数据目录(通常为/var/lib/mysql),以查看是否存在损坏的表文件,如果发现损坏文件,可以使用MySQL REPAIR TABLE语句修复损坏的表;
3. 检查MySQL日志,检查是什么原因导致MySQL因系统或文件错误而无法打开某些表文件;
4. 尝试从MySQL服务器备份原始数据库,如果不能备份,可以从备份中恢复MySQL数据;
5. 确保MySQL的字符集具有正确的编码和字符空间;
6. 尝试使用MySQL OPTIMIZE TABLE语句检查空间使用;
7. 检查MySQL服务器上有没有足够的磁盘空间,如果磁盘空间不足,请尝试释放一些空间来腾出更多的磁盘空间;
8. 尝试更新MySQL服务器,以确保使用最新版本的MySQL,并且不会无意中干扰MySQL服务器;
9. 尝试在MySQL服务器上重启,然后重试原来操作;
10. 如果步骤1 – 9都失败,可以考虑删除并重新创建MySQL表。