【问题标题】:how to restore my MYI, MYD tables from .FRM [duplicate]如何从.FRM恢复我的MYI,MYD表[重复]
【发布时间】:2012-11-01 10:46:49
【问题描述】:

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

我在这里看到了这个问题,但老实说,我无法理解发布的任何解决方案。在出现一些问题后,我刚刚重新安装了 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,但从未遇到过这个问题。

在此先感谢...

【问题讨论】:

  • 不是它被标记为欺骗的问题的副本;另一个问题询问如何从原始文件中恢复表,这个问题专门询问是否(某些)这些文件丢失。其他问题的答案不适用。

标签: mysql phpmyadmin


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 非常感谢 cHao - 也感谢他们就“所谓的“欺骗”问题提出正确的意见。我确实有现有的 innoDB 表,所以我想试试你关于将文件转储到新目录中的建议......不过我可以问一下,我如何将 MySQL 指向那个新目录??
  • 如果你停止正在运行的mysqld,你可能会说mysqld --datadir=/path/to/files。如果让它继续运行,则需要设置更多选项。
  • 嗨 cHao - 它一直给我错误,主要是我相信的语法 - 我将使用 long 方法并打开 .frm 文件并使用其中的任何可挽救信息再次创建表。我只需要知道 db 中的 19 个表中的字段名称 'cos,幸运的是,只有 5 个“尚未使用”的表丢失了。嘿,再次感谢您的时间和支持。
猜你喜欢
  • 2010-10-27
  • 2013-05-07
  • 2012-03-12
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2010-11-24
相关资源
最近更新 更多