首页 > 后端开发 > php教程 > Mysql搬移,数据表出问题,怎么修复?

Mysql搬移,数据表出问题,怎么修复?

WBOY
发布: 2016-06-23 13:54:40
原创
1019 人浏览过

是通过复制、粘贴mysql的整个data文件夹进行恢复数据的
现在发现MyISAM类型的表都是正常的。

但是有个数据库能列出数据表,但是点击表之后就说:

#1146 - Table 'eval.class' doesn't exist
登录后复制


怎么修复?


回复讨论(解决方案)

只有 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文件就可以了。
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板