MySQL数据库表的修复方法
受损表的症状通常是对意外中断的查询,您可以看到这样的错误,例如:tbl_name.frm锁定不能改变。
我找不到文件tbl_name.myi(errcode:# # #)。
从处理器错误# # #表(此时,错误135是一个例外)。
意外文件的结尾。
记录文件被销毁。
在这些情况下,你要修表。该表的修复是一个非常困难的工作,在许多情况下,它是很难做到的。但是,也有一些传统的思路和流程,遵循他们增加机会修改表。通常,它开始以最快的修复方法,以看看口袋里的故障是可能的。如果发现不成功,你可以逐步升级到更彻底,但速度较慢,修复方法。如果仍然难以解决,应该从备份恢复。本节详细描述了在前一章。
简易安全修复
要修复一个表,执行以下步骤:
第一种方法是使用恢复- R选项、更正表和快速选项,仅根据索引文件内容恢复。这不会触及数据文件来修复索引文件。(r表示恢复模式)
myisamchk - R Q tbl_name
isamchk·R·Q tbl_name
如果该问题仍然存在,则快速选项将被忽略,允许修复程序修改数据文件,因为这可能是一个问题:
myisamchk -r tbl_name
isamchk R tbl_name
如果前一步失败,安全恢复模式将使用旧的恢复方法处理少数情况(但更慢),传统的恢复模式不好。
myisamchk --安全恢复tbl_name
isamchk --安全恢复tbl_name
一个艰难的修复
如果索引文件的第一16k块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段。在这种情况下,有必要创建一个新的索引文件。按照这样的步骤如下:
包含折叠表数据库目录的位置。
数据文件在某个地方更安全。
我使用一个表描述文件来创建一个新的(空的)数据和索引文件:
MySQL db_name壳>
MySQL >删除tbl_name;
MySQL >退出
上面的语句将创建新的空表,重新生成新的数据和索引文件使用表的描述文件tbl_name.frm。
旧数据文件被复制到新创建的数据文件中。(不要将旧文件移回新文件;必须保留一个副本以防止出错)。
在修法的标准。如今myisamchk - R Q应该工作。(这不应该是一个无限循环)。
如果您有一个备份表,它就容易得多。从备份文件中,您可以恢复表的描述文件,然后检查表,可以继续使用标准的修复方法,它应该能够解决这个问题。
非常困难的修理
只有描述文件也被损坏,您应该在这个阶段到达。这不应该发生,因为在创建表时,描述文件不再更改。
从备份中恢复并返回到2阶段的描述文件,也可以恢复索引文件并返回到1阶段。对于后者,你应该开始用myisamchk - R.
如果由于某种原因,数据备份文件丢失或没有备份文件,但您还记得表的创建表语句的创建,这很好,这样我们仍然可以恢复索引文件。
包含折叠表数据库目录的位置。
数据文件在某个地方更安全。然后删除数据库目录中相应的目录。
我们调用mysql创建表来建立复杂的语句表。
将MySQL退出,将原始数据文件和索引文件返回到数据库目录,只需替换新文件即可。
然后,他返回到第2阶段,修复表。您还可以移动到数据文件中,以便保留新的描述和索引文件,然后返回到第1阶段,并继续以标准方式修复表。