1、把数据库格式从类似的数据库结构中同步到本地数据库,本地数据库行格式是:Dynamic的,备份的数据是Compact的 需要把同步的数据库表的行格式批量改成Compact格式; 快速修改mysql数据库行记录格式ROW_FORMAT_sql row fromat-优快云博客 SELECT CONCAT( "ALTER TABLE `", table_schema, "`.`", table_name, "` ROW_FORMAT =COMPACT ;" ) FROM information_schema.TABLES WHERE table_schema IN ( '数据库名称' ); 批量获取修改命令运行; 2、关闭数据库,在本地数据库data中搜素.ibd文件,批量删除,把备份的.ibd文件拷贝到数据表中 3、开启数据库,获取改变表空间命令,运行,就可以恢复数据了 //批量获取改变表空间命令 public function b(){ $path = 'D:/phpstudy_pro/Extensions/MySQL5.7.26/data/*';//获取数据库目录 if(file_exists($path)){ $files = glob($path.'/*.frm');//获取frm类型文件 foreach ($files as $v){ $filename = basename($v,".frm");//获取文件名 $a = 'ALTER TABLE '.$filename.' IMPORT TABLESPACE;<br/>';//改表空间 print($a); } } }
如果出现ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
把索引去掉,恢复数据后,再改为ROW_FORMAT =DYNAMIC手动添加索引