4

可能重复:
如何从 .myd、.myi、.frm 文件中恢复 mysql db

我在这里看到了这个问题,但老实说,无法理解发布的任何解决方案。在出现一些问题后,我刚刚重新安装了 windows vista,并且我确实为旧安装的 Mysql 复制了整个“数据”文件夹。MySQL 的原始和新安装版本是 5.0.85。

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

这些表显示在 phpMyAdmin 中的某些屏幕中,例如“分配表级别权限”下拉菜单 - 所以它们似乎仍然存在,但它们没有出现在显示 aDB 中所有表的左列中。它们是可以恢复的还是永远丢失的?对于新手来说,我将不胜感激任何足够详细的帮助。我以前设置过 WAMP,但从未遇到过这个问题。

在此先感谢...

4

1 回答 1

8

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

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

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

但是,如果您的表是 InnoDB 表,那么您可能很幸运。InnoDB 表不会有.MYDor .MYI;本来在其中的数据将改为在ibdata1. 您可能能够(在停止 mysqld 之后)简单地将.frmib*文件偷偷放到正确的位置,并让 mysqld 在重新启动时看到它们。

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

于 2012-11-12T23:42:12.530 回答