> 백엔드 개발 > PHP 튜토리얼 > Mysql搬移,数据表出问题,怎么修复?

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

WBOY
풀어 주다: 2016-06-23 13:54:40
원래의
1021명이 탐색했습니다.

是通过复制、粘贴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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿