MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)

mysql 直接从date 文件夹备份表,还原数据库之后提示#1146 table doesn`t exist的原因和解决方法

在重新安装wampserver服务的时候,备份了F:\wamp\bin\mysql\mysql5.7.9\data数据库文件夹,拷贝到新安装的mysql路径下,但是有的数据库正常打开了,有的数据库,虽然左侧可以展开列表,但是点击数据表提示#1146 table doesn`t exist,经网上查找,原因如下:

1:MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。(只需要拷贝 数据库名字文件夹下面的文件,这样数据库就拷贝完了)
2:  InnoDB类型的 要注意多拷贝 ibdata1 , 最好不要是直接复制文件夹,而是应该用sql导入导出


感觉应该是数据库引擎配置的问题,于是搜索了有关InnoDB 和MyISAM的相关资料,如下这段内容很有意义

以表”Table”为例:
如类型是MyISAM, 数据文件则以”Table.frm””Table.MYD””Table.MYI””三个文件存储于”/data/$databasename/”目录中.
如类型是InnoDB, 数据文件则存储在”$innodb_data_home_dir/″中的ibdata1文件中(一般情况),结构文件存在于table_name.frm中.
MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。
而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。
MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:

同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务
由于MySQL这样数据混杂的形式, 往往很容易让使用者在备份时忘记了备份InnoDB, 从而导致了上述错误.

未经允许不得转载:OZ分享-吉家大宝官方博客 » MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

置顶文章