ERROR 1808 (HY000): Schema mismatch (Clustered index validation failed. Because the .cfg file is missing, table definition of the IBD file could be different. Or the data file itself is already corrupted.)
这个很难解决 ,可以在有历史备份文件的情况下尝试手动恢复。 如果还有整个数据库服务器文件的Data目录,跟ibdata1文件之类有关。哪怕是几个月前的快照也好!只要数据结构差距不大。[mysqld]下新增一句innodb_force_recovery=4 或者 6,【mysql8没有ib_logfile0,ib_logfile1,对应的是#innodb_redo目录可以不删】然后尝试启动mysqld;(强制恢复数据,跳过有问题的数据内容)。
基本上有源数据库的目录文件都能恢复出来,但是有的表就比较奇葩
ROW_FORMAT的锅,不过默认基本都是启用的.....
直接通过 innodb_force_recovery=6还是不能恢复 ,现象例如打开 .cfg file is missing的表mysql直接报错停止运行,可以尝试生成新的cfg文件
FLUSH TABLES ... FOR EXPORT 运行时, InnoDB 在表的架构目录中生成元数据 .cfg 文件。(我不知道我是不是这么取巧恢复的,使用旧备份数据库EXPORT 生成cfg 文件,然后关闭,删除表旧的ibd文件,把新版本有较新数据需要恢复的ibd文件扔过来。innodb_force_recovery=4 或者 6 启动让mysql自行读取恢复)
好像id int自增的库容易出现
mysql 需要cfg来恢复自增值之类的
ERROR 1808 (HY000): Schema mismatch (Clustered index validation failed. Because the .cfg file is missing, table definition of the IBD file could be different. Or the data file itself is already corrupted.) 这个很难解决 ,可以在有历史备份文件的情况下尝试手动恢复。 如果还有整个数据库服务器文件的Data目录,跟ibdata1文件之类有关。哪怕是几个月前的快照也好!只要数据结构差距不大。[mysqld]下新增一句innodb_force_recovery=4 或者 6,【mysql8没有ib_logfile0,ib_logfile1,对应的是#innodb_redo目录可以不删】然后尝试启动mysqld;(强制恢复数据,跳过有问题的数据内容)。 基本上有源数据库的目录文件都能恢复出来,但是有的表就比较奇葩
ROW_FORMAT的锅,不过默认基本都是启用的..... 直接通过 innodb_force_recovery=6还是不能恢复 ,现象例如打开 .cfg file is missing的表mysql直接报错停止运行,可以尝试生成新的cfg文件 FLUSH TABLES ... FOR EXPORT 运行时, InnoDB 在表的架构目录中生成元数据 .cfg 文件。(我不知道我是不是这么取巧恢复的,使用旧备份数据库EXPORT 生成cfg 文件,然后关闭,删除表旧的ibd文件,把新版本有较新数据需要恢复的ibd文件扔过来。innodb_force_recovery=4 或者 6 启动让mysql自行读取恢复) 好像id int自增的库容易出现 mysql 需要cfg来恢复自增值之类的
https://dev.mysql.com/doc/refman/8.0/en/innodb-table-import.html#innodb-table-import-prerequsites https://blog.csdn.net/ai_feng123/article/details/83032343
其他: 报foreign key 错误的可以先导入数据时强制忽略,比较表关联关系有先后顺序