如何修复损坏的表

时间:2011-05-30 13:59:39

标签: mysql

我有一个名为 Sample mysql表。我已使用某些值编辑了文件/var/lib/mysql/Sample.MYI。现在检查TABLE示例查询显示为

  

表'Sample'的密钥文件不正确;尝试修复它

要修复此问题,我尝试使用以下命令myisamchk -r Sample.MYI。但结果是“myisamchk:

  

错误:尝试重新创建索引文件时出现错误140 MyISAM-table Sample.MYI由于错误而无法修复“。

现在如何修复此表?

5 个答案:

答案 0 :(得分:16)

万一你没有备份,没有原始文件而无法重新下载,以下是一些可能对你有帮助的链接:

http://www.felipecruz.com/repair-mysql-database.php
http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html(另见本页底部的链接)
http://forums.mysql.com/read.php?21,362974,362974

以下命令将从头开始重新创建.myi文件:

REPAIR TABLE tablename USE_FRM

enter image description here请注意这一点,这页:http://dev.mysql.com/doc/refman/5.5/en/repair-table.html说:

  

仅当您不能使用常规REPAIR模式时才使用USE_FRM选项!告诉服务器忽略.MYI文件会使存储在.MYI中的重要表元数据无法用于修复过程,这可能会产生有害后果:[.....]

最后如何以不同的方式重做:

http://www-users.cs.york.ac.uk/susan/joke/foot.htm

答案 1 :(得分:10)

检查损坏表的状态

check table tablename;

e.g

mysql> check table realtime_clicks_update;
+--------------------------------+-------+----------+----------+
| Table                          | Op    | Msg_type | Msg_text |
+--------------------------------+-------+----------+----------+
| logdata.realtime_clicks_update | check | status   | OK       |
+--------------------------------+-------+----------+----------+

如果状态不正常,请使用以下命令

进行修复
mysql> repair table tablename;

答案 2 :(得分:8)

为什么要编辑.MYI文件?你不应该这样做。

从备份还原,然后以适当的方式重新应用更改。

答案 3 :(得分:0)

放回原来的Sample.MYI文件:)

答案 4 :(得分:0)

REPAIR TABLE语句可以帮助您恢复表。该语句适用于MyISAM,Archive和CSV表。命令如下: 修理     表格tbl_name [,tbl_name] ...     [QUICK] [EXTENDED] [USE_FRM] 哪里 快速:如果使用此选项,则修复表将尝试仅修复索引文件而不修复数据文件。 扩展:如果使用此选项,则MySQL逐行创建索引,而不是一次创建一个索引进行排序。 USE_FRM:如果缺少.MYI索引文件或其标题已损坏,则使用此选项。

在这种情况下,您可以尝试使用USE_FRM选项修复表。 如果上述方法不起作用,则可以尝试使用Stellar的MySQL修复工具,但首先应尝试使用手动方法,并且仅在需要快速解决问题的情况下才应使用此方法。该软件声称可以修复MySQL数据库的InnoDB和MyISAM表,并以原始格式安全地还原所有不可访问的数据库对象,包括主键,视图,触发器,表等。