你可能在使用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,继续用标准的方法修复表。
本文来自猴岛论坛 :http://bbs.houdao.com/r2851912_u1328382/
分享到:
相关推荐
在本场景中,我们关注的是如何通过特定工具,如Navicat,来管理和修复MySQL数据库中的表。 Navicat是一款强大的数据库管理工具,它支持多种数据库管理系统,包括MySQL。`navicat8lite_mysql_cs.exe` 文件是Navicat ...
总结来说,检查并修复MySQL数据库表是数据库维护的关键环节。通过编写自动化脚本,可以定期执行这些任务,减少手动操作的工作量,同时提高系统的稳定性。在实际操作中,应该根据自己的环境调整脚本,确保它能适应你...
/bin/sh#code by scpman#功能:检查并修复mysql数据库表#将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开始修复#修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。...
MySQL数据库修复大师是一款专为解决MySQL数据库损坏问题而设计的强大工具。它具备高效的数据恢复功能,能够处理多种类型的数据库文件损坏情况,确保用户能够在数据丢失或系统崩溃后迅速恢复重要信息。这款7.12版的...
MySQL数据库修复大师是一款专业的数据库恢复工具,专为MySQL用户提供服务,旨在帮助用户在遇到数据库损坏、数据丢失等问题时,能够高效、准确地恢复重要的数据库信息。这款软件通过深入解析MySQL的数据存储格式,...
在这种情况下,`mysqlcheck.exe`工具就显得尤为重要,它是MySQL提供的一种实用程序,专门用于检查、修复、优化和分析MySQL数据库中的表。 `mysqlcheck.exe`是一个命令行工具,它能够执行多种功能,包括: 1. **...
这款工具专为解决MySQL数据库的故障而设计,其主要功能包括数据恢复、表结构修复以及日志分析等。通过先进的算法和深度扫描技术,它能够深入到数据库的底层,找出并修复损坏的记录,确保数据的完整性和一致性。 ...
本教程将深入探讨MySQL数据库表的修复方法,帮助你理解可能导致数据损坏的原因,并提供有效的解决策略。 首先,数据库表损坏可能由多种原因引起。最常见的原因之一是数据库服务器的非正常关机或强制重启,这在电源...
MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
进入论坛数据库,然后选择要修复的表(您损坏的是cdb_sessions 会员认证数据表),在页脚下拉框选择“修复”即可 如果您的服务器是独立主机强烈建议使用命令行方式进行修复: 修复前将mysql服务停止。 如果是Win主机,...
#### 修复MySQL数据库表 当数据库表出现损坏时,可能会影响到数据的一致性和完整性,甚至导致应用无法正常运行。因此,及时修复这些表是非常重要的。以下是通过PhpMyAdmin修复MySQL数据库表的步骤: 1. **打开需要...
"mysql数据库修复专家"就是针对这种需求的专业工具,它覆盖了MySQL 3到6版本的错误修复,能够处理多种类型的数据库文件,包括MYD、IBD和ibdata1。 MYD、IBD和ibdata1是MySQL数据库中不同类型的数据文件: 1. MYD...
表结构是MySQL数据库的核心组成部分,它定义了数据如何存储、组织和相互关联。在开发和维护数据库时,有时需要将表结构导出为文本或文档格式,以便备份、迁移或共享。"数据库 MySQL 表结构导出工具 DBCHM.rar"正是...
一:MySQL中MyISAM表损坏原因总结: 1、 服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysql 服务;mysqld 进程在写表时被杀掉。 2、 磁盘损坏。 3、 服务器死机。 4、 mysql 本身的bug 。 二:MySQL中MyISAM...