.frm .ibd数据恢复(windows)

装的phpstudy不小心卸载了,后来才想起数据库文件都在phpstudy文件夹内,出一身冷汗,去一看还有data文件夹,为了整洁我贱的把data文件夹下除数据库文件夹外的文件都删除了,哎,现在想恢复,在网上找了很多方法,下面这个还靠谱。


#环境准备:


下载并安装:mysql-utilities-1.6.5-winx64.msi


#进入mysql的data目录下,我的是在D盘(D:\mysql\data\)


切换到mysql-utilities的安装目录下,执行命令,不要加分号

mysqlfrm --diagnostic D:\mysql\data\xxx.frm


这样就获取到所有表的表结构了,如下图示:

image.png


把上面的建表结构的语句复制下来,如下:

CREATE TABLE `robot`.`rb_admin_group` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT comment 'ID',
  `pid` int(10) unsigned NOT NULL comment '涓婄骇鍒嗙粍',
  `name` varchar(400) DEFAULT NULL comment '缁勫悕',
  `rules` text comment '鏉冮檺瑙勫垯ID',
  `createtime` int(10) DEFAULT NULL comment '鍒涘缓鏃堕棿',
  `updatetime` int(10) DEFAULT NULL comment '鏇存柊鏃堕棿',
  `status` enum('1','0') NOT NULL comment '鐘舵€?0=绂佺敤,1=鍚敤',
PRIMARY KEY `PRIMARY` (`id`) USING BTREE
) ENGINE=InnoDB;

把上面的备注也就是comment上面的删除,也就是乱码的删除,要不建表结构不成功,改成如下:

CREATE TABLE `robot`.`rb_admin_group` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT comment 'ID',
  `pid` int(10) unsigned NOT NULL,
  `name` varchar(400) DEFAULT NULL,
  `rules` text,
  `createtime` int(10) DEFAULT NULL,
  `updatetime` int(10) DEFAULT NULL,
  `status` enum('1','0') NOT NULL,
PRIMARY KEY `PRIMARY` (`id`) USING BTREE
) ENGINE=InnoDB

然后直接执行上面的命令就可以生成表结构,这时会生成.frm和.ibd两个文件,然后用下面的命令,删除ibd


删除新创建表的表空间

ALTER TABLE 表名 DISCARD TABLESPACE


将D:\mysql\data\目录下 .ibd文件复制到new_db的数据目录下


执行

ALTER TABLE 表名 import TABLESPACE





复制内容


评论


乖,登录后才可以留言! 登录

Copyright © 2020-2023 春藤技术,春藤建站 All Rights Reserved
备案号:豫ICP备20020705号 公网安备 51LA统计