如何用myisamchk工具解决MySQL中标记为损坏的表问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1008个文字,预计阅读时间需要5分钟。
这个错误仅对MyISAM表有意义,InnoDB表不会触发此提示。如果表是InnoDB引擎,但看到这个错误,大多数情况下是误报或日志截断——例如,从旧备份恢复后未清理的+.MYI文件的损坏标记,或者应用层错误地使用了MyISAM风格的错误处理逻辑。
查证方式很简单:
SHOW TABLE STATUS LIKE 'your_table_name';
看 Engine 列。如果是 InnoDB,别碰 myisamchk,直接跳到 REPAIR TABLE 或重启 MySQL 后检查 innodb_force_recovery;只有确认是 MyISAM 才继续往下走。
用 myisamchk 修复前必须停掉 MySQL 服务
myisamchk 是离线工具,直接操作磁盘上的 .MYD 和 .MYI 文件。MySQL 进程只要还在运行,就可能缓存、写入或锁住这些文件,强行运行 myisamchk 极易导致二次损坏。
本文共计1008个文字,预计阅读时间需要5分钟。
这个错误仅对MyISAM表有意义,InnoDB表不会触发此提示。如果表是InnoDB引擎,但看到这个错误,大多数情况下是误报或日志截断——例如,从旧备份恢复后未清理的+.MYI文件的损坏标记,或者应用层错误地使用了MyISAM风格的错误处理逻辑。
查证方式很简单:
SHOW TABLE STATUS LIKE 'your_table_name';
看 Engine 列。如果是 InnoDB,别碰 myisamchk,直接跳到 REPAIR TABLE 或重启 MySQL 后检查 innodb_force_recovery;只有确认是 MyISAM 才继续往下走。
用 myisamchk 修复前必须停掉 MySQL 服务
myisamchk 是离线工具,直接操作磁盘上的 .MYD 和 .MYI 文件。MySQL 进程只要还在运行,就可能缓存、写入或锁住这些文件,强行运行 myisamchk 极易导致二次损坏。

