可能重复:
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中的某些屏幕中,例如“分配表级特权”下拉菜单-因此它们似乎仍然存在,但不会显示在显示ADB中所有表的左栏中。它们是可收回的还是永久的损失??如果有足够详细的帮助,我会非常感谢,让新手理解的。我以前设置过wamp,但从未遇到过这个问题。
提前谢谢你…
最佳答案
.frm
文件只包含有关表结构的元数据。它们不包含你的数据。
对于myisam表,.MYD
文件基本上就是表(sans元数据或索引);如果它消失了,您的数据就消失了。可能有一种方法可以生成“空”文件并重新开始,但是是的。没有他们,你就没有数据。.MYI
文件包含索引afaik。这些可以重新生成,但不能没有数据。
不过,如果您的表是innodb表,那么您可能运气不错。innodb表不会有.MYD
或.MYI
的;本来应该在其中的数据会在ibdata1
中。您可以(在停止mysqld之后)简单地将.frm
和ib*
文件潜入正确的位置,并让mysqld在重新启动时看到它们。
当然,如果您已经有了innodb数据文件,这是行不通的——或者说,如果它有了,您将失去任何现有的innodb表。不过,在这种情况下,可以将文件放到另一个目录中,并启动指向该目录的mysqld实例。对于mysqldump
一个sql表来说,这就足够了,因此您可以将它导入到新的数据库中。