MySQL备份或者转移数据库时有一种方便的方法,就是直接拷贝MySQL目录下,data
文件夹下对应的数据库文件夹;但当粘贴到另外的电脑下的data
文件夹下后,虽然打开数据库后能看到各个table
,但使用时却会提示table xxx doesn't exist
这种错误。
出现这种问题一般是因为MySQL数据库使用的是InnoDB
引擎
先说解决方法:
- 停止MySQL服务
- 将原MySQL目录下,data文件夹下的ibdata1文件拷贝粘贴到新date文件夹下
- 启动MySQL服务
如果还出现问题,尝试:
- 停止MySQL服务
- 将原MySQL目录下,data文件夹下的ib_logfile0及ib_logfile1文件拷贝粘贴到新date文件夹下
- 启动MySQL服务
如果问题还是没解决,尝试:
- 停止MySQL服务
- 将原MySQL目录下,data文件夹下的auto.cnf文件拷贝粘贴到新date文件夹下
- 启动MySQL服务
如果还是有问题...就是MySQL配置有问题或者MySQL本身不能正常工作了。
下面说原因:
当使用InnoDB
引擎时,一共会产生三种文件:
-
.ibd
:包含每个table的数据和索引 -
.frm
:用来描述table的结构等 -
ibdata1
:包含所有table的字典和历史操作
即在data
文件夹中,每个数据库分别是一个文件夹,此文件夹中包含每个table
的.ibd
文件和.frm
文件;同时,在data
文件夹下,ibdata1
文件会记录MySQL中所有InnoDB
数据库中table
的字典和历史操作。
所以一定要记得ibdata1
这个文件。
注意还有innodb_file_per_table
这个参数设置问题