一、背景
从mysql5.7迁移数据到mysql5.6,由于迁移过程中操作不规范,导致迁移后的数据库实例可以打开,但是表无法打开,报1312错误,显示tablespace不存在
二、手动创建空表
mysql>CREATE TABLE ``tablename` (表内容省略
) ENGINE=InnoDB ROW_FORMAT=compact DEFAULT CHARSET=utf8 COMMENT=’ ';
注意:一定要加上ROW_FORMAT=compact
三、分离表结构和数据文件
mysql> alter table tablename discard tablespace;
四、将需要恢复的ibd文件,拷贝至表结构的目录
五、将遗留的frm表结构和需要恢复的idb数据做结合
mysql>alter table tablename import tablespace;
六、可以查询无法打开的ibd中的数据
说明:最好以上操作在新建的库中进行操作,以免影响其它库中的表