mysql创建表时ENGINE=InnoDB和MyISAM生成的数据文件是不一样的
InnoDB生成.frm和.ibd两个文件,直接复制到新的数据库目录,是找不到表的,
MyISAM生成.frm 和.MYD 还有.MYI三个文件,直接就复制就能用了。
要恢复.frm和.idb需要安装工具。
1、mysql-utilities-1.6.5-winx64.msi
2、vcredist_x64.exe
3、phpstudy_pro 为本地测试用
4、notepad++ 编辑和替换很方便
下载、安装。
安装后,找到mysql-utilities 安装的目录
我们会用到mysqlfrm的命令,返回上层目录,按住shift 右击
配置mysql运行环境
把 .frm文件名提取出来,这里我用命令提示符
在文件夹上按shift右击,打开命令提示符
输入:dir /t /b >1.txt
打开新生成的1.txt
用notepad++提取文件名
剪切或复制书签行
粘贴到新的文档
去掉扩展名备用,(可能要用三遍,保存好)
处理.frm转换命令
mysqlfrm --server=root:root@localhost:3306 文件路径\\\1.frm > 文件路径\\sql\\\1.sql --diagnostic --port=3307 --user=
\1将被替换成表名
多条命令就好了,替换 文件路径
全选复制,找到安装的mysql工具的文件夹,命令符里右击
命令就自动执行了
生成了文件,打开看看
我们需要数据库创建代码已经生成
但一个表一个表的恢复比较麻烦,合成一个文件,再处理一下
还是命令提示符:copy *.sql 1.sql
打开1.sql
删除多余的注释
删除错误提示语句
行尾 加上 ROW_FORMAT=COMPACT;
复制表名,去phpmyadmin里建一个数据库
把处理好的语句粘贴进来
执行表结构就建好了
处理命令:alter table `\1` discard tablespace;
执行生成的命令
执行成功,
找到数据文件夹
这里已经有新的frm,把原有的.ibd文件张贴进来
生成命令:alter table `\1` import tablespace;可以在先前的命令上直接替换
执行命令
OK,完成了看看成果吧
举报/反馈

贾码农

13获赞 128粉丝
有关网站开发的总结,做个有经验的小码农
关注
0
0
收藏
分享