我在这里看到过这个问题,但老实说无法理解发布的任何解决方案。我刚刚重新安装了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但从未遇到过这个问题。
提前致谢...
答案 0 :(得分:7)
.frm
文件只包含有关表结构的元数据。它们不包含您的数据。
对于MyISAM表,.MYD
文件基本上就是表(没有元数据或索引);如果它消失了,你的数据就消失了。可能有一种方法可以生成“空”文件并重新开始,但是是的。没有它们,你就没有数据。
.MYI
个文件包含索引AFAIK。那些可以重新生成,但不能没有数据。
如果您的表是InnoDB表,那么可能很幸运。 InnoDB表不会有.MYD
或.MYI
;其中的数据将改为ibdata1
。您可以(在停止mysqld之后)将.frm
和ib*
文件隐藏到正确的位置,让mysqld在重新启动时看到它们。
当然,如果您已经拥有 InnoDB数据文件,这将无效 - 或者更确切地说,如果确实如此,您将最终丢失任何现有的InnoDB表。但是,在这种情况下,您可以将文件放入另一个目录并启动指向该目录的mysqld实例。这对于mysqldump
表作为SQL就足够了,因此您可以将其导入新数据库。