我仅从
.frm和
.idb文件中还原了该表。
获取SQL查询以创建表
如果您已经知道表的架构,则可以跳过此步骤。
首先,安装MySQL Utilities。然后,您可以
mysqlfrm
在命令提示符(cmd)中使用命令。其次,
.frm
使用以下mysqlfrm
命令从文件中获取SQL查询:mysqlfrm --diagnostic <path>/example_table.frm
然后,您可以获取SQL查询以创建相同的结构化表。像这样:
CREATE TABLE `example_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(150) NOT NULL, `photo_url` varchar(150) NOT NULL, `password` varchar(600) NOT NULL, `active` smallint(6) NOT NULL, `plan` int(11) NOT NULL,PRIMARY KEY `PRIMARY` (`id`)) ENGINE=InnoDB;
创建表
使用上面的SQL查询创建表。
如果旧数据仍然存在,则可能必须先删除相应的数据库和表。确保您已备份数据文件。
恢复数据
运行此查询以删除新表数据:
ALTER TABLE example_table DISCARD TABLESPACE;
这将删除新
.frm文件和(新的,空的)
.idb文件之间的连接。另外,删除
.idb文件夹中的文件。
然后,将旧
.idb文件放入新文件夹,例如:
cp backup/example_table.ibd <path>/example_table.idb
确保
.ibd文件可以被
mysql用户读取,例如,通过
chown -R mysql:mysql *.ibd在文件夹中运行。
运行此查询以导入旧数据:
ALTER TABLE example_table import TABLESPACE;
这将从
.idb文件中导入数据,并将恢复数据。



