以下过程适用于
MyISAM
表格。有关遇到InnoDB
表损坏时应采取的步骤的信息,请参阅第 1.6 节,“如何报告错误或问题”。
如果您遇到损坏的MyISAM
表或者mysqld在某些更新语句后总是失败,您可以通过执行以下操作来测试问题是否可重现:
使用mysqladmin shutdown 停止 MySQL 守护进程。
对表进行备份,以防止修复造成不良后果的可能性很小。
使用myisamchk -s database/*.MYI 检查所有表。使用myisamchk -r database/
table
.MYI修复任何损坏的表 。对表进行第二次备份。
如果需要更多空间,请从 MySQL 数据目录中删除(或移走)所有旧日志文件。
在启用二进制日志的情况下启动mysqld。如果你想找到一个导致 mysqld崩溃的语句,你应该在启动服务器的同时启用通用查询日志。请参阅 第 5.4.3 节,“一般查询日志”和 第 5.4.4 节,“二进制日志”。
当你得到一个崩溃的表时,停止 mysqld服务器。
恢复备份。
在不启用二进制日志的 情况下 重新启动mysqld服务器 。
使用mysqlbinlog binary-log-file | 重新执行语句 MySQL。二进制日志保存在 MySQL 数据库目录中,名称为 .
hostname-bin.
NNNNNN
如果表再次损坏,或者你可以用上面的命令让 mysqld死掉,你就发现了一个可重现的错误。使用第 1.6 节“如何报告错误或问题”中给出的说明将表和二进制日志通过 FTP 传输到我们的错误数据库 。如果您是支持客户,可以使用 MySQL 客户支持中心 ( https://www.mysql.com/support/ ) 向 MySQL 团队提醒该问题并尽快修复。