损坏的MySQL表 - “无法找到文件”错误;有没有办法恢复丢失的.myd和.myi文件?

时间:2012-03-20 20:19:47

标签: mysql phpmyadmin mysqldump myisam

我是MySQL newbe,我正在尝试在我的一个数据库中修复损坏的表。这是一个简单的IPS论坛,目前在线。今天早些时候,我尝试执行mysqldump并收到此错误:

mysqldump: Got error: 1017: Can't find file: 'wcsf_profile_portal_views' (errno: 2) when using LOCK TABLES

所以我继续看看有什么不对劲。似乎其中一个表是腐败的。我尝试使用修复,但我得到了同样的错误:

mysql> REPAIR TABLE wcsf_profile_portal_views;
+-----------------------------------------------+--------+----------+---------------------------------------------------------+
| Table                                         | Op     | Msg_type | Msg_text                                                |
+-----------------------------------------------+--------+----------+---------------------------------------------------------+
| wecreate_finalforum.wcsf_profile_portal_views | repair | Error    | Can't find file: 'wcsf_profile_portal_views' (errno: 2) |
| wecreate_finalforum.wcsf_profile_portal_views | repair | status   | Operation failed                                        |
+-----------------------------------------------+--------+----------+---------------------------------------------------------+
2 rows in set (0.00 sec)

我查了一下,并尝试了一些建议http://www.databasejournal.com/features/mysql/article.php/10897_3300511_2/Repairing-Database-Corruption-in-MySQL.htm

但到目前为止,mysqlcheckmyisamchk没有运气。

重要的是要注意我正在使用MyISAM。我检查了数据库文件夹,看起来缺少两个文件: wcsf_profile_portal_views.MYD wcsf_profile_portal_views.MYI 。但是, wcsf_profile_portal_views.frm 文件确实存在。因此,我尝试了REPAIR TABLE wcsf_profile_portal_views USE_FRM;,但又收到了Can't open table

我找不到导致腐败的原因。有什么建议吗?

编辑:我不情愿地尝试通过旧备份恢复表。没有骰子 - 显然,它已经被破坏了一段时间,这个数据库特别是从来没有备份,因为它一直在失败。我从来没有注意到FML。这就是你使用WHM所获得的!幸运的是,这不是一张重要的表格。它是Invision Powered主板的一部分,我想它会对配置文件视图进行计数。我在本地安装了新的,并将表复制回实时数据库,修复后现在似乎正常工作 - 我可以成功mysqldump,我想现在备份也可以正常工作。

我不会认为这个问题得到了回答,因为我没有完全修复它(数据丢失)而且我没有找到导致腐败的原因。也许这是与IPB相关的具体问题。

2 个答案:

答案 0 :(得分:1)

.MYD文件包含表中的基础数据,.MYI文件是表中的索引。如果你丢失了数据,我看不出除了某种备份之外你怎么可能恢复。

答案 1 :(得分:1)

如果存在文件“ tablename.MYI”,则在文件夹“ data / databaseName”中搜索。如果不是,请在另一个数据库(或旧数据库)中获取相同文件,并将其粘贴到文件夹中。

启动MySQL,然后修复表。

这就是我解决问题的方式。

对不起,我的英语是这样。