问题描述
mysqld-nt: Table 'tablename' is marked as crashed and should be repaired
分析原因
操作系统关机时,正在往数据库的这个表里保存数据,导致表损坏。但多数情况下,数据库被破坏只是指索引文件受到了破坏,真正的数据被破坏掉的情况非常少。
解决方法:
1.MySQL Command Line Client
分析表:analyze table xxx
检查表:check table xxx
如果,获得不是OK就是有问题需要修复。
修复表:repair table 表名 [选项]
选项如下:
QUICK 用在数据表还没被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引
多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,例如:
另外,也可以使用myisamchk或者使用mysql内建命令mysqlcheck来修复。
参考:http://rubyqiu.php.blog.163.com/blog/static/86141523200810223225729/