mysql数据库修复:如何修复MySQL数据库表

="t18">你可能在使用MySQL过程中各种意外导致数据库表损坏而且这些数据往往是最新数据通常不可能在备份数据中找到本章将继上篇文章中检查出表问题后告诉你如何修复表

张损坏症状通常是查询意外中断并且你能看到例如这些:

◆ “tbl_name.frm”被锁定不能改变

◆ 不能找到文件“tbl_name.MYI”(Errcode :### )

◆ 从表处理器得到###(此时135是个例外)

◆ 意外文件结束

◆ 记录文件被毁坏

在这些情况下你必须修复表修复是项非常困难工作很多情况下令人束手无策然而些常规知道思想和过程可以遵循它们来增加修正表机会通常开始是可以用最快修复思路方法看看能否袖珍故障如果发现不成功可以逐步升级到更彻底但更慢修复思路方法如果仍旧难以修复就应该从备份中恢复了在上章已经详细介绍了这部分内容

简单安全修复

为了修复个表执行下列步骤:

◆ 首先用--recover,-r选项修正表并且用--quick-q选项来只根据索引文件内容进行恢复这样不接触数据文件来修复索引文件(-r意味着“恢复模式”)


myisamchk -r -q tbl_nameisamchk -r -q tbl_name


◆ 如果问题仍旧存在则忽略--quick选项允许修复修改数据文件这可能存在问题下面命令将从数据文件中删除不正确记录和已被删除记录并重建索引文件:


myisamchk -r tbl_nameisamchk -r tbl_name


◆ 如果前面步骤失败使用安全恢复模式使用个老恢复思路方法处理常规恢复模式不行少数情况(但是更慢)


myisamchk --safe-recover tbl_nameisamchk --safe-recover tbl_name


困难修理

如果在索引文件个16K块被破坏或包含不正确信息或如果索引文件丢失你只应该到这个阶段 在这种情况下创建个新索引文件是必要按如下这样步骤做:

◆ 定位到包含崩溃表数据库目录中

◆ 把数据文件移更安全地方

◆ 使用表描述文件创建新(空)数据和索引文件:


shell> mysql db_namemysql> DELETE FROM tbl_name;mysql> quit


上述语句将重新创建新空表并使用表描述文件tbl_name.frm重新生成新数据和索引文件

◆ 将老数据文件拷贝到新创建数据文件的中(不要只是将老文件移回新文件的中;你要保留个副本以防某些东西出错)

◆ 在使用标准修复思路方法现在myisamchk -r -q应该工作了(这不应该是个无限循环)

如果你拥有表备份文件那么切过程就容易从备份文件中可以恢复表描述文件然后在检查表有可能还要继续使用标准修复思路方法应该纠可以解决问题了

非常困难修复

只有描述文件也破坏了你才应该到达这个阶段这应该从未发生过在表被创建以后描述文件就不再改变了

个备份恢复描述文件并且回到阶段2你也可以恢复索引文件并且回到阶段1对于后者你应该用myisamchk -r启动

如果某种原因数据备份文件丢失或者没有备份文件但是你还记得建立表CREATE TABLE语句那么太好了这样还是可以恢复索引文件:

◆ 定位到包含崩溃表数据库目录中

◆ 把数据文件移更安全地方再把数据库目录中对应目录删去.

mysql并发复CREATE TABLE语句建立该表

◆ 退出mysql将原始数据文件和索引文件移回到数据库目录中替换刚才新建文件

◆ 然后回到阶段2修复表也可以只移回数据文件这样保留新描述和索引文件然后回到阶段1继续用标准思路方法修复表

Tags:  mysql创建数据库 免费mysql数据库 mysql数据库 mysql数据库修复

延伸阅读

最新评论

发表评论