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/b1.txt
打开新生成的1.txt
用notepad++提取文件名
剪切或复制书签行
粘贴到新的文档
去掉扩展名备用,(可能要用三遍,保存好)
处理.frm转换命令
mysqlfrm--server=root:root
localhost:文件路径\\\1.frm文件路径\\sql\\\1.sql--diagnostic--port=--user=\1将被替换成表名
多条命令就好了,替换文件路径
全选复制,找到安装的mysql工具的文件夹,命令符里右击
命令就自动执行了
生成了文件,打开看看
我们需要数据库创建代码已经生成
但一个表一个表的恢复比较麻烦,合成一个文件,再处理一下
还是命令提示符:copy*.sql1.sql
打开1.sql
删除多余的注释
删除错误提示语句
行尾加上ROW_FORMAT=COMPACT;
复制表名,去phpmyadmin里建一个数据库
把处理好的语句粘贴进来
执行表结构就建好了
处理命令:altertable`\1`discardtablespace;
执行生成的命令
执行成功,
找到数据文件夹
这里已经有新的frm,把原有的.ibd文件张贴进来
生成命令:altertable`\1`importtablespace;可以在先前的命令上直接替换
执行命令
OK,完成了看看成果吧