高版本mysql向低版本mysql导入数据

来源:互联网 发布:直线制职能制矩阵制 编辑:程序博客网 时间:2024/04/30 18:04

今天遇到一个需求,原先开发一个原型项目的时候是放在国外的服务器上面,
然后这个项目成熟了之后想到国内来,提升页面浏览的速度.之前加载一个页面是这样的.
这里写图片描述
可以看见.这里的Content Download 居然到了20.87s
简直不可以忍受.

然后排查问题发现,原因就是因为那个数据库是远程连接的数据库,在页面加载的时候,freemark也会循环去调用查询数据库的sql

由于是远程连接的sql, 所以每次查询的时候,都要重新连接, 累计起来的耗时十分之大,
必须要用局域网里的数据库.

所以目的转向了迁库就可以解决问题的局面

但是,有个问题是, 当时开发的时候的mysql 库是5.6的.而生产库是5.5的版本.

哈哈哈,然后我用navicat 里面的数据传输功能, 然后它居然给我报

MySQL: Unknown character set: ‘utf8mb4

我XXX 不都是UTF-8 吗,怎么就不能互转呢, 然后 搜索一下呗

http://www.tuicool.com/articles/zAnEV3

在这里我们了解到,关于emoji表情的话mysql的utf8是不支持,需要修改设置为utf8mb4,才能支持.. 原来是为了适配这个emoji表情.我了个乖乖,.

好吧,解决办法当然也有

方法1、升级数据库为Mysql5.5版本(如果是虚拟主机就不能用这个方法了)

方法2、用SQL命令修改数据表的排序规则(默认编码)

方法一 要升级的话,是需要重启.. 可是这个库可是生产库啊. 这个方案不行,

那就用方法二了, 首先导出sql 文件
在navicat 里, 右键, 转储sql文件 , 数据与结构 . 就好了
然后用note ++ 全局替换掉里面的utf8mb4

这下可以了吧. 右键!运行SQL文件!

what hell?!!
又给我报错了.

[Err] 1153 - Got a packet bigger than ‘max_allowed_packet’ bytes

max_allowed_packet 是个什么鬼,看起来像是一个mysql里的配置问题,

我查查

http://blog.csdn.net/ysyn1209/article/details/51170871

这个博客说
会通过这个配置来限制传入数据库大小的数据
那就改呗 .

用navicat ,,,居然没不能改,
mysql -h10.0.0.1 -uroot -p123

直接进命令行里改吧

mysql –help | grep my.cnf

show VARIABLES like ‘%max_allowed_packet%’;

set global max_allowed_packet = 2*1024*1024*10

然后运行,成功导入了!!

0 0
原创粉丝点击