如何从.FRM恢复我的MYI,MYD表

时间:2012-11-12 23:35:49

标签: mysql phpmyadmin

  

可能重复:
  How to recover mysql db from .myd, .myi, .frm files

我在这里看到过这个问题,但老实说无法理解发布的任何解决方案。我刚刚重新安装了windows vista,遇到了一些问题,我就为旧安装的Mysql制作了整个'data'文件夹的副本。原始和新安装的MySQL版本是5.0.85。

phpMyAdmin的原始版本是3.2.1,但我现在安装了最新版本:3.5.3。问题是我丢失了一些MYI和MYD文件,我认为这些是表格和索引文件。所有的.FRM文件都存在,还有一个ibdata1文件(也就是ib_logfile0和ib_logfile2)。

这些表在某些屏幕中显示在phpMyAdmin中,例如'assign table level priviledges'下拉菜单 - 所以它们似乎仍然存在,但它们不显示在左列中,显示了aDB中的所有表。它们是可以恢复还是永远丢失?我会非常感谢任何帮助,以了解新手。我以前设置过WAMP但从未遇到过这个问题。

提前致谢...

1 个答案:

答案 0 :(得分:7)

.frm文件只包含有关表结构的元数据。它们不包含您的数据。

对于MyISAM表,.MYD文件基本上就是表(没有元数据或索引);如果它消失了,你的数据就消失了。可能有一种方法可以生成“空”文件并重新开始,但是是的。没有它们,你就没有数据。

.MYI个文件包含索引AFAIK。那些可以重新生成,但不能没有数据。

如果您的表是InnoDB表,那么可能很幸运。 InnoDB表不会有.MYD.MYI;其中的数据将改为ibdata1。您可以(在停止mysqld之后)将.frmib*文件隐藏到正确的位置,让mysqld在重新启动时看到它们。

当然,如果您已经拥有 InnoDB数据文件,这将无效 - 或者更确切地说,如果确实如此,您将最终丢失任何现有的InnoDB表。但是,在这种情况下,您可以将文件放入另一个目录并启动指向该目录的mysqld实例。这对于mysqldump表作为SQL就足够了,因此您可以将其导入新数据库。