如何从MySQL .frm恢复数据?

时间:2011-10-16 10:42:47

标签: mysql

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

从我所看到的,只有.frm文件,没有.myd文件。但是,有ibdata1文件。我该如何恢复?

2 个答案:

答案 0 :(得分:6)

我明白了。

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

就是这样!

答案 1 :(得分:1)

非常简单的步骤。

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

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

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

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

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

    警告:这将删除当前的.ibd文件。

  6. 将备份exam_time.frmexam_time.ibd文件复制到适当的数据库目录。

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

检查您的exam_time表是否已恢复..... Hurrahhh