首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

修补数据表(mysql repair table-Can’t open file: ‘[Table]mytable.MYI’.)

2012-07-15 
修复数据表(mysql repair table-Can’t open file: ‘[Table]mytable.MYI’.)下面讲的方法只对MyISAM格式的表

修复数据表(mysql repair table-Can’t open file: ‘[Table]mytable.MYI’.)

下面讲的方法只对MyISAM格式的表有效。其他类型的损坏需要从备份中恢复。

REPAIR TABLE SQL statement(mysql服务必须处于运行状态)。
在修复表的时候,最好先作一下备份。所以你需要两倍于原始表大小的硬盘空间。请确保在进行修复前你的硬盘空间还没有用完。

用”repair table”方式修复
语法:repair table 表名 [选项]
选项如下:
QUICK 用在数据表还没被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引

多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,例如:

mysql>?REPAIR?TABLE?mytable;
+————————-+——–+———-+———————————————+
|?Table?|?Op?|?Msg_type?|?Msg_text?|
+————————-+——–+———-+———————————————+
|?sports_results.mytable?|?repair?|?error?|?Can’t?find?file: ‘mytable.MYI’?(errno:?2)?|
+————————-+——–+———-+———————————————+

修复失败的原因时索引文件丢失或者其头部遭到了破坏,为了利用相关定义文件来修复,需要用USE_FRM选项。例如:

mysql>?REPAIR?TABLE?mytable?USE_FRM;
+————————-+——–+———-+————————————+
|?Table?|?Op?|?Msg_type?|?Msg_text?|
+————————-+——–+———-+————————————+
|?sports_results.mytable?|?repair?|?warning?|?Number?of?rows?changed?from?0?to?2?|
|?sports_results.mytable?|?repair?|?status?|?OK?|
+————————-+——–+———-+————————————+

我们可以看到Msg_test表项的输出信息”ok”,表名已经成功修复受损表。

热点排行