问题描述
|
我有一个名为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表,并以原始格式安全地还原所有不可访问的数据库对象,包括主键,视图,触发器,表等。