查看文章 |
如何修复损坏的MyISAM表
2009年04月12日 星期日 下午 1:32
作者:老王 当我们用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] myisam-recover [= options] 参数有DEFAULT,BACKUP,FORCE,QUICK,可以设定为BACKUP,FORCE,万万不可单独设置成FORCE,否则数据文件丢了都没处哭去。 应该尽量使用myisamchk命令去修复,不行再用repair语句去修复(慢),还不行就参考下面链接。 参考文档:How to Repair Tables |
最近读者:

