装的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
这样就获取到所有表的表结构了,如下图示:
把上面的建表结构的语句复制下来,如下:
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