如何修复损坏的表

问题描述

| 我有一个名为Sample的“ 0”表。我用一些值编辑了文件
/var/lib/MysqL/Sample.MYI
。现在检查TABLE示例查询显示为   表\'Sample \'的密钥文件不正确;尝试修复它 为了修复这个问题,我尝试使用以下命令
myisamchk -r Sample.MYI
。但结果是\“ myisamchk:   错误:由于错误而无法修复试图重新创建索引文件MyISAM表
Sample.MYI
时出现错误140。 现在如何修理这张桌子?     

解决方法

        万一您没有备份,没有原始文件且无法重新下载,以下一些链接可能会对您有所帮助: 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
但是请谨慎使用此页面: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     ,        检查损坏的表的状态
check table tablename;
例如
mysql> check table realtime_clicks_update;
+--------------------------------+-------+----------+----------+
| Table                          | Op    | Msg_type | Msg_text |
+--------------------------------+-------+----------+----------+
| logdata.realtime_clicks_update | check | status   | OK       |
+--------------------------------+-------+----------+----------+
如果状态不正常,则使用以下命令对其进行修复
mysql> repair table tablename;
    ,        为什么要编辑
.MYI
文件?您不应该这样做。 从备份还原,然后以适当的方式重新应用更改。     ,        放回原始Sample.MYI文件:)     ,        REPAIR TABLE语句可以帮助您恢复表。该语句适用于MyISAM,Archive和CSV表。命令如下: 修理     表格tbl_name [,tbl_name] ...     [QUICK] [EXTENDED] [USE_FRM] 哪里 快速:如果使用此选项,则修复表将尝试仅修复索引文件而不修复数据文件。 扩展:如果使用此选项,则MySQL逐行创建索引,而不是一次创建一个索引进行排序。 USE_FRM:如果.MYI索引文件丢失或其标题损坏,则使用此选项。 在这种情况下,您可以尝试使用USE_FRM选项修复表。 如果上述方法不起作用,则可以尝试使用Stellar的MySQL修复工具,但首先应尝试使用手动方法,并且仅在需要快速解决问题的情况下才应使用此方法。该软件声称可以修复MySQL数据库的InnoDB和MyISAM表,并以原始格式安全地还原所有不可访问的数据库对象,包括主键,视图,触发器,表等。