MySQL直接拷贝数据库文件后出现table xxx doesn't exist解决方法

Posted xtjatswc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL直接拷贝数据库文件后出现table xxx doesn't exist解决方法相关的知识,希望对你有一定的参考价值。

mysql备份或者转移数据库时有一种方便的方法,就是直接拷贝MySQL目录下,data文件夹下对应的数据库文件夹;但当粘贴到另外的电脑下的data文件夹下后,虽然打开数据库后能看到各个table,但使用时却会提示table xxx doesn‘t exist这种错误。

出现这种问题一般是因为MySQL数据库使用的是InnoDB引擎

先说解决方法:

  1. 停止MySQL服务
  2. 将原MySQL目录下,data文件夹下的ibdata1文件拷贝粘贴到新date文件夹下
  3. 启动MySQL服务

如果还出现问题,尝试:

  1. 停止MySQL服务
  2. 将原MySQL目录下,data文件夹下的ib_logfile0及ib_logfile1文件拷贝粘贴到新date文件夹下
  3. 启动MySQL服务

如果问题还是没解决,尝试:

  1. 停止MySQL服务
  2. 将原MySQL目录下,data文件夹下的auto.cnf文件拷贝粘贴到新date文件夹下
  3. 启动MySQL服务

如果还是有问题...就是MySQL配置有问题或者MySQL本身不能正常工作了。


下面说原因:
当使用InnoDB引擎时,一共会产生三种文件:

  • .ibd:包含每个table的数据和索引
  • .frm:用来描述table的结构等
  • ibdata1:包含所有table的字典和历史操作

即在data文件夹中,每个数据库分别是一个文件夹,此文件夹中包含每个table.ibd文件和.frm文件;同时,在data文件夹下,ibdata1文件会记录MySQL中所有InnoDB数据库中table的字典和历史操作。

所以一定要记得ibdata1这个文件。


注意还有innodb_file_per_table这个参数设置问题

以上是关于MySQL直接拷贝数据库文件后出现table xxx doesn't exist解决方法的主要内容,如果未能解决你的问题,请参考以下文章

MySql重装以后,修改数据库路径,打开以前的数据库报Table 'XX库.XX表' doesn't exist错误的解决办法

mysql能不能通过直接拷贝mysql文件夹的方式

linux下运行ldconfig命令后,提示“XX不是符号链接“是啥意思

mysql.user表重置密码后出现表损坏问题

MySQL两个数据库之间数据的拷贝

mysql数据库备份怎么直接拷贝