今天遇到一个需求,原先开发一个原型项目的时候是放在国外的服务器上面,
然后这个项目成熟了之后想到国内来,提升页面浏览的速度.之前加载一个页面是这样的.
可以看见.这里的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
然后运行,成功导入了!!