1. 程式人生 > >高版本mysql向低版本mysql匯入資料

高版本mysql向低版本mysql匯入資料

今天遇到一個需求,原先開發一個原型專案的時候是放在國外的伺服器上面,
然後這個專案成熟了之後想到國內來,提升頁面瀏覽的速度.之前載入一個頁面是這樣的.
這裡寫圖片描述
可以看見.這裡的Content Download 居然到了20.87s
簡直不可以忍受.

然後排查問題發現,原因就是因為那個資料庫是遠端連線的資料庫,在頁面載入的時候,freemark也會迴圈去呼叫查詢資料庫的sql

由於是遠端連線的sql, 所以每次查詢的時候,都要重新連線, 累計起來的耗時十分之大,
必須要用局域網裡的資料庫.

所以目的轉向了遷庫就可以解決問題的局面

但是,有個問題是, 當時開發的時候的mysql 庫是5.6的.而生產庫是5.5的版本.

哈哈哈,然後我用navicat 裡面的資料傳輸功能, 然後它居然給我報

MySQL: Unknown character set: ‘utf8mb4

我XXX 不都是UTF-8 嗎,怎麼就不能互轉呢, 然後 搜尋一下唄

在這裡我們瞭解到,關於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裡的配置問題,

我查查

這個部落格說
會通過這個配置來限制傳入資料庫大小的資料
那就改唄 .

用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

然後執行,成功匯入了!!