将高版本mysql数据库的数据导入低版本mysql中

前言

最近做了个网站,准备放到虚拟主机上的时候,发现本地数据库是mysql5.6,服务器上的mysql是5.0的。于是尝试导出数据,结果,导入的数据不是出错,就是各种乱码。折腾了好久之后,终于找到了解决之道,特来水一贴,分享一发。

建议是在数据迁移的时候版本差距别太大,有可能会出现版本兼容问题。


方法

之前用的是phpmyadmin导出的,即使设置了mysql导出兼容低版本,还是有问题。后来,想到了电脑上还装了个navicat for mysql,打开一看,果然可以将高版本mysql数据库中的数据无伤导入低版本mysql中。前提是你装了navicat for mysql,步骤: 
1. 打开navicat for mysql,选择你要导出的数据库,然后右键 
这里写图片描述 
2. 设置属性,选择对应的mysql版本即可,然后开始 
这里写图片描述

总结

高版本mysql和低版本mysql之间会有兼容性问题,一不小心就可能导致乱码或者错误。”Unknown collation: ‘utf8mb4_unicode_ci”错误问题。

不同的msyq版本和不同的mysql驱动会出现不兼容问题


com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
	解决办法是 重新下载mysql 并使用相同版本的  驱动。。。结果就没有问题了。
	后来,我又重新用了之前的驱动,结果也没有问题。所以我觉得应该是我之前的mysql数据库出问题了。
	看网上说,最好用较高版本的的驱动,这样会向下兼容。
 
  

mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法【mysql低版本数据导入到高版本出错】

【具体参考:mysql的sql_mode详解】
修改mysql5.7的配置文件即可解决,方法如下:
 linux版:找到mysql的安装路径进入默认的为/usr/share/mysql/中,进行对my-default.cnf编辑利用查找功能"/"找 
到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"将其删除或者是注释即可。

 Windows版:

    32位找到mysql安装路径直接修改my.ini文件利用ctrl+f搜索出来的内容
 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"将其注释或者是删除即可。

  64位需要进入windows的安装目录下XXX\MySQL Server 5.7\Data,修改配置文件my.ini,利用ctrl+f搜索出来
 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"将其注释者删除即可。


高版本mysql导入低版本mysql的方法解决数据库乱码的问题


用PHP+mysql开发的网站经常会遇到mysql数据库版本不同导致迁移网站数据时经常出现:导入不成功,如出现数据库臭虫,导入后是乱码等问题

邦明科技迁移mysql数据库的方法是: 



高版本mysql导入低版本mysql的方法:


1.从高版本的mysql默认导出utf-8为mysql.sql


2.用记事本打开mysql.sql


3.去掉含有/*!40101 符号的注释行


4.复制所有记事本里的sql语句


5.打开低版本的mysql数据库,然后点击查询SQL,将复制的SQL代码粘贴到SQL查询框中执行


6.这样就成功将高版本的mysql导入到低版本的mysql,并解决了乱码问题


 

之前做的很多失败过程: 


1.删除头尾:/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;导入utf-8无法导入,出错


2.另存为ansi 导入utf-8可以导入,乱码,无法显示


3.另存为:unicode 导入utf-8无法导入,出错


4.另存为unicode 替换utf-8为latin1 导入utf-8无法导入,出错


5.另存为unicode 替换utf8为latin1 导入utf-8无法导入,出错



你可能感兴趣的:(数据库)