欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > 数据库 >内容正文

数据库

mysql还原数据库后日期显示3000-凯发k8官方网

发布时间:2024/10/8 数据库 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 mysql还原数据库后日期显示3000_mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

补充:正常情况下,建议数据库备份最好用工具进行备份,通过拷贝数据库表进行数据迁移,不同的环境会出现各种不同的意外问题。

背景:今天在整理一个网站的时候,操作系统由于系统自动更新导致一直出现系统蓝屏死机,唉,悲剧了,于是重新安装了系统 windows server 2008 enterprise 32bit。

详情:

系统安装完成后,重新配置之前那个网站,appache服务配好之后,再配置数据的时候是这样做的,将原来mysql 文件夹(c:\windows.old\programdata\mysql\mysql server 5.1\data)下的数据库文件夹及"*.frm"

拷贝到新安装的myql数据库文件夹下面(c:\programdata\mysql\mysql server 5.1\data),重启mysql服务,通过使用navicate for mysql 工具查看数据库 “xxdatabase”中某张表,结果显示“ mysql table 'xxtable' doesn`t exist ”,

这个可把我给急坏了,心想这下可玩大了,网站的数据要是出问题了,领导还不把我给烧烤了啊。

于是我就google 啊,百度啊,bing啊,stackoverflow啊等几大常用的搜索全用上了,搜索出来的答案全部都不能解决问题啊,一不留神时间到了该吃饭的点了,唉,心想先吃饱饭,然后在思考更有思路,哈哈。于是回去猛吃了一顿,可把我给撑的啊,废话少说,回来后又找啊找啊,结果还是没能找到合适凯发k8官方网的解决方案,于是认真查看了下mysql 的data文件加下的文件,发现了win-4fa0wlp5f0v.err和win-4fa0wlp5f0v.pid 两个文件,于是看了具体的错误内容如下

感觉应该是数据库引擎配置的问题,于是搜索了有关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, 从而导致了上述错误.

意思就是说在数据库引擎类型为innodb时,拷贝数据文件的同时还需要拷贝ibdata1,于是把ibdata1也拷贝过去覆盖,发现还是有点问题,于是停止mysql服务,将目录下的ib_logfile*文件全部删除掉,重新启动mysql服务,well done,可以了

高兴啊,于是稍微总结了,希望以后遇到相同的问题,能够快速解决。

1,在进行mysql数据库备份的或迁移的时候,尽量备份完成所需要的数据;

2,如果直接拷贝原有数据库文件"*.frm"、"*.myd"、"*.myi"等文件时候,如果原数据库引擎是innodb,切记还需拷贝ibdata1文件

3,备份数据库的时候,最好是用相关的工具进行备份或是导出sql文件,以免浪费时间在数据库恢复上

4,msyql版本或是备份工具的版本不同,也可能引起数据恢复有问题。

实践证明以上问题是存在的,凯发k8官方网的解决方案是可行的,哈哈,为了以后方便,写了这篇博客随笔,希望大牛看到了不要鄙视,欢迎拍砖。

1:myisam类型的数据文件可以在不同操作系统中copy,这点很重要,布署的时候方便点。(只需要拷贝 数据库名字文件夹下面的文件,这样数据库就拷贝完了)

2:  innodb类型的 要注意多拷贝 ibdata1 , 最好不要是直接复制文件夹,而是应该用sql导入导出

总结

以上是凯发k8官方网为你收集整理的mysql还原数据库后日期显示3000_mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图