今天,部署測試環境,遷移數據庫數據時,發生了以下問題:
公司的數據庫mysql8.0版本,而我測試環境的數據庫則是5.7版本
從公司導出的數據庫sql文件,導入測試環境數據庫時發生了報錯
以下是本人一系列的解決方法
第一步:
使用Navicat工具
此時,我們將上面導出的文件,導入我們測試環境的數據庫,如下:
運行后發現報錯了,我們看一下報錯信息
原因是數據庫排序規則的問題,MySQL 5.7使用的默認為utf8mb4_unicode_ci
,但是從MySQL8.0開始使用的已經改成utf8mb4_0900_ai_ci
解決方法:
打開sql文件,把所有的utf8mb4_0900_ai_ci替換成utf8mb4_unicode_ci
最后我們重新導入試試:
導入成功,問題解決!!!
補充一點:期間還遇到一個問題
報錯內容:
1153 - Got a packet bigger than 'max_allowed_packet' bytes
原因:MySQL默認讀取執行的SQL文件最大為16M,我這個文件是50多M的,所以出現了報錯
解決方法:
找到服務器mysql安裝目錄下的my.cnf文件,一般會在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找
find / -name my.cnf
編輯文件,在文件內[mysqld]下面加上max_allowed_packet=400M
保存文件,並重啟mysql
service mysql restart
重啟后即可解決