是通过复制、粘贴
mysql
的整个data文件夹进行恢复数据的
现在发现MyISAM类型的表都是正常的。
但是有个数据库能列出数据表,但是点击表之后就说:
怎么修复?
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
回复讨论(解决方案)
只有 MyISAM类型 的表可以通过拷贝文件进行迁移
其他类型的表都必须通过迁移工具迁移
拷贝全了没有? 里面的ibdata1文件拷贝了没有?
直接拷贝 ibdata1 是不妥当的
1、他会覆盖目标数据库的否写表数据
2、把原库的垃圾也带过来了
3、会因磁盘格式的不同等原因,在创建数据块索引时发生错误,无法修复时就废掉了
ibdata1也拷贝了。
有frm文件也不能修复或拿到部分数据么?
先停止 mysql 服务
用命令行方式启动 mysql
你会看到有关文件修复的各种信息
我以前也做过这种在两个 mysql 下直接拷贝文件的事情,但总是没能完美的处理成功
后来都是用指派 datadir 和 innodb_data_file_path 来完成不同 mysql 下数据共享的
你或许可以这样做:在原来的 mysql 中把 innodb 的表转换成 MyISAM 的表(管理工具中只是点点鼠标而已)
将转换后的 MyISAM 表拷贝到目标位置,然后在转换成 innodb
为什么不用mysqldump来做?如果两个mysql版本不一致,可能还需要工具修复下导出的sql文件
直接copy文件夹这种不可取
先停止 mysql 服务
用命令行方式启动 mysql
你会看到有关文件修复的各种信息
我以前也做过这种在两个 mysql 下直接拷贝文件的事情,但总是没能完美的处理成功
后来都是用指派 datadir 和 innodb_data_file_path 来完成不同 mysql 下数据共享的
你或许可以这样做:在原来的 mysql 中把 innodb 的表转换成 MyISAM 的表(管理工具中只是点点鼠标而已)
将转换后的 MyISAM 表拷贝到目标位置,然后在转换成 innodb
原来的mysql已经没了,只有备份文件了,可以恢复吗?
那原来的 mysql 的版本号是多少?
给个链接,看看对你是否有帮助 http://www.baidu.com/s?wd=innodb+frm%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F&ie=utf-8
给个链接,看看对你是否有帮助 http://www.baidu.com/s?wd=innodb+frm%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F&ie=utf-8
感谢!
已经可以了
老版本的数据文件和表文件是在data目录下的
新版本的数据文件在mysql目录下,表文件在data目录下
移动一下ibdata1文件就可以了。
#1146 - Table 'eval.class' doesn't exist