从frm和ibd文件恢复表结构

Dan*_*ach 6 mysql sql innodb phpmyadmin

我试图恢复PMA中的数据库,但只能访问frm和ibd文件 - 而不是我理解你需要的ib_log文件.

我知道我可能无法恢复数据库数据但是是否可以从frm文件中恢复表的结构?

小智 24

我只恢复了表.frm.idb文件.

  1. 首先,我在笔记本电脑上安装了MySQL Utilities.然后,您可以mysqlfrm在命令提示符(cmd)中使用命令.

  2. 其次,我.frm使用mysqlfrmcmd中的命令从文件中获取了sql查询.

.frm

然后,您可以获取sql查询以创建相同的结构化表.像这样:

.idb

我使用上面的sql查询创建了表.

  1. 第三,我运行此查询以删除新表数据.

.idb

这删除了新.idb文件和.ibd文件之间的连接.还删除了文件夹中的.idb文件.

  1. 第四,我把旧mysql文件放在新文件夹中.我运行此查询以导入旧数据.

chown -R mysql:mysql *.ibd

这从.idb文件导入数据,最后,我恢复了旧数据表.我相信这会对你有所帮助.

谢谢.

  • 对于像我一样遇到 ROW_TYPE_DYNAMIC 问题的其他人。您必须从头开始该过程,并在创建表语句中在“ENGINE=InnoDB”之后添加“ROW_FORMAT=COMPACT”,这样它看起来像“) ENGINE=InnoDB ROW_FORMAT=COMPACT DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci”例子。然后像平常一样重复这些步骤,它应该可以工作。 (4认同)
  • 我通过更改文件的所有权解决了这个问题,但现在我得到了“#1808 - 模式不匹配(表具有 ROW_TYPE_DYNAMIC 行格式,.ibd 文件具有 ROW_TYPE_COMPACT 行格式)”。 (3认同)