现在的位置: 首页 > 综合 > 正文

修复损坏的MyISAM表

2017年12月06日 ⁄ 综合 ⁄ 共 747字 ⁄ 字号 评论关闭

 

当我们用PHPMyAdmin浏览数据库时,有时候会发现某些MyISAM表的Collation项显示为“in use”,这多半说明此表已经损坏。即便是没有出现“in use”字样,也不能就此说明表是完好无损的,熟悉检查及方法是必须的。

通过语句:

检查表使用CHECK TABLE语句,如下:

CHECK TABLE tbl_name [, tbl_name] … [option] …
option = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

表使用REPAIR TABLE语句,如下:

REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] …
    [QUICK] [EXTENDED] [USE_FRM]

通过命令:

检查表可以使用myisamchk命令:

myisamchk [options] tbl_name …

如果没有指定参数,那么myisamchk命令缺省执行的就是检查动作。若是要表,可以使用-r或-o参数,应该优先使用-r修复,不行的话再使用-o修复。此外,在前应该使用FLUSH TABLES刷新缓存,并关闭数据库服务器或者锁定所有的待表,以确保在过程中不会有其他写操作。

自动

在my.cnf配置文件中的mysqld部分设定myisam-recover参数,当服务启动时可以自动有问题的表(速度快慢视数据多少):

[mysqld]
-recover [= options]

参数有DEFAULT,BACKUP,FORCE,QUICK,可以设定为BACKUP,FORCE,万万不可单独设置成FORCE,否则数据文件丢了都没处哭去。

参考文档:How to Repair Tables

抱歉!评论已关闭.