【问题标题】:How to restore data from MySQL .frm?如何从 MySQL .frm 恢复数据?
【发布时间】:2023-03-05 23:38:01
【问题描述】:

我在 MySQL 的 .frm 文件中有所有数据。如何恢复数据?我不想恢复所有这些,只是一些记录和表格,所以我需要将它们转储出来。

据我所知,只有 .frm 文件,没有 .myd 文件。但是,有 ibdata1 文件。我应该如何恢复?

【问题讨论】:

  • 你有完整的mySQL数据目录吗?
  • 您无法从文件中的 frm 恢复数据,因为它们只包含架构。如果你有 ibdata 文件或一个大的 ibdata 文件,那么你有一组 innodb 表。 Link1Link2

标签: mysql


【解决方案1】:

我搞定了。

1) 我创建了一个空数据库,以本地安装的服务器上的真实数据库命名。

2) 我杀死了“mysqld”

3) 我将三个 ib* 文件复制到我的本地 MySQL 数据目录(在 Windows 上它是根驱动器中的隐藏文件夹)。确保你复制到 InnoDB 数据文件目录,根据你的 my.cnf InnoDB 和 MyISAM 数据可能存储在不同的文件夹中。我还复制了 .frm 文件。

4) 我跑了"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file="C:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini" --innodb-force-recovery=6

5) 我运行mysql -uroot -pmypass 来确认use mydb; select * from mytable; 返回的结果。

6) 我用mysqldump mydb mytable --compact > file.sql

就是这样!

【讨论】:

  • 你!先生..救了我的命!
  • 您引导我找到了解决方案 - ibdata* 文件位于 mysql/data/ 文件中,而我原本希望它们位于每个相应的数据库文件夹中。
  • 我经常收到这个错误 :: InnoDB:Ignoring the redo log due to missing MLOG_CHECKPOINT.. InnoDB:Plugin initialization aborted Plugin 'InnoDB' init 函数返回错误。注册为 STORAGE ENGINE 失败。然后根据您的指导,我运行了“mysqld --innodb-force-recovery=6”以及APache。结果,我能够在浏览器中打开 PHPMyAdmin,并且所有表都以只读模式打开。最好的事情是我能够以 SQL 格式导出所有数据库。它救了我的命。我安装了另一个 Xampp 并导入了那个 SQL。谢谢!!
【解决方案2】:

非常简单的步骤。

  1. 在 Xampp 控制面板中点击 MySql 的配置,然后选择“my.ini”文件。

  2. 在此文件中,在[mysqld] 行之后添加一行innodb_file_per_table=1

  3. 现在,我创建了一个您要恢复的数据库,名称为 exam_table

  4. 逐一创建要恢复的表,名称为exam_time

  5. 运行 SQL 查询/查询ALTER TABLE `exam_time` DISCARD TABLESPACE;

    注意:这会删除当前的 .ibd 文件。

  6. 将备份的exam_time.frm & exam_time.ibd 文件复制到相应的数据库目录。

  7. 运行 SQL 查询/查询ALTER TABLE tbl_name IMPORT TABLESPACE;

检查您的exam_time 表,它已恢复.....Hurrahhh

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 2010-11-15
    • 1970-01-01
    • 2011-01-04
    • 2010-10-27
    • 2022-07-23
    • 2014-03-09
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多