我有一个名为 Sample 的mysql
表。我已使用某些值编辑了文件/var/lib/mysql/Sample.MYI
。现在检查TABLE示例查询显示为
表'Sample'的密钥文件不正确;尝试修复它
要修复此问题,我尝试使用以下命令myisamchk -r Sample.MYI
。但结果是“myisamchk:
错误:尝试重新创建索引文件时出现错误140 MyISAM-table
Sample.MYI
由于错误而无法修复“。
现在如何修复此表?
答案 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
请注意这一点,这页:http://dev.mysql.com/doc/refman/5.5/en/repair-table.html说:
仅当您不能使用常规REPAIR模式时才使用USE_FRM选项!告诉服务器忽略.MYI文件会使存储在.MYI中的重要表元数据无法用于修复过程,这可能会产生有害后果:[.....]
最后如何以不同的方式重做:
答案 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表,并以原始格式安全地还原所有不可访问的数据库对象,包括主键,视图,触发器,表等。