数据表的修复
[作者]:菩提树下的杨过 [来源]:互联网 [收录时间]:2007-12-9 10:53:06

现在问题时有几个数据表坏了,能不能修复,怎么做?最好给出具体步骤!急呀,各位大虾,请帮帮忙,谢谢!

---------------------------------------------------------------

数据表的修复
作者:bombshell
日期:2002-01-01

注重:在修复表之前要拷贝他们,注重备份,切记!

1.标准的表修复
 a.试着用 --recover选项修复表,可以加上 --quick选项试图只根据索引的内容进行修复,这样做不触及数据文件。
   % myisamchk --recover --quick table_name
   or 
   % isamchk --recover --quick table_name
 b.假如问题还存在,在试一下上一步命令,但是要忽略 --quick选项,这样答应修改数据文件。
   % myisamchk --recover table_name
   or 
   % isamchk --recover table_name
 c.假如还不工作,试一下 --safe-recover 修复方法。但这种方法比普通方法要慢,但能修复 --recover不能修复的问题。
   % myisamchk --safe-recover table_name
   or 
   % isamchk --safe-recover table_name
假如在myisamchk or isamchk 由于一个"can't create new temp file:file_name"的错误消息在任何一步停止,应该重复该命令并
加入 --force选项强迫清除临时文件。

2.假如标准修复失败这样做
 a.定位到包含崩溃表的数据库目录中。
 b.将该表的数据文件移到安全的地方。
 c.调用mysql并通过执行下列语句重新创建新的空表,该语句使用表的描述文件
   tbl_name.frm重新开始生成新的数据和索引文件。
   mysql>delete from tbl_name;
 d.退出mysql,将原始的数据文件移回到数据目录中,替换刚建的新的空文件。
 e.在世这样用标准修复方法。

为了修复表的描述文件,可先从备份文件中恢复,然后再用标准修复方法。
假如由于某些原因没有备份,假如知道create table 语句,仍然可以恢复该文件:
a.定位到包含崩溃表的数据库目录中。
b.将该表的数据文件移到安全的地方。假如想使用用索引的话,还需要把索引文件移走。
c.调用mysql 发布create table 语句重建表。
d.退出mysql,将原始的数据文件移回到数据目录中,替换刚才新建的数据文件。假如在第2不中移动了索引文件,则也要讲起移回到数据库目录中。
e.在尝试标准表修复方法。

以上方法针对mysql有效,请大家注重。