【MySQL篇】Navicat導入SQL大文件報錯終極解決方案

面對大資料庫文件(一般50M以上),使用Navicat導入的時候容易出現[ERR]2006等報錯問題,此文提供了幾種辦法,包括修改MySQL的配置參數在網上也有很多詳細教程介紹過,但此文精彩處在於前面幾種都不行的情況下,通過修改Navicat配置參數,來完成資料庫大文件的導入!!!---【suy】

 

一、不勾選「每個運行中運行多重查詢」

第一建議嘗試的方法,可快速檢驗。

 

(一)成功->那就恭喜你了!!!下面的沒你事了

 

(二)繼續報錯

常見下面三種情況報錯,那就繼續嘗試」第二、第三「的幾種方法!

1)顯示部分成功,有部分數據

2)顯示部分成功,無數據(實際沒有導入)

3)顯示全部出錯,無數據

 

二、修改MySQL配置

(一)「my.ini」配置文件修改

找到MySQL安裝目錄下的my.ini配置文件,查找修改max_allowed_packet參數,再增加wait_timeout、interactive_timeout兩項參數,詳細如下。

1、修改max_allowed_packet參數、增加兩項參數

max_allowed_packet:用來控制其通訊緩衝區的最大長度。是mysql允許最大的數據包(默認大小4M),遇到大的資料庫文件導入時經常報錯;

wait_timeout:# 伺服器關閉非交互連接之前等待活動的秒數;

interactive_timeout:伺服器關閉互動式連接前等待活動的秒數;

兩個值可自定義,但如果設置時間太短,容易超時後出現MySQL server has gone away [ERR]2006錯誤;

(注意:需要同時設置wait_timeout和interactive_timeout才會生效;如果報「too many connections」的錯誤,可以對這兩個參數進行適當調小些。)

 max_allowed_packet=2000M
 wait_timeout=2880000
 interactive_timeout = 2880000

2、修改支援中文字符集編碼

檢查是否是中文編碼不支援的原因,客戶端默認的字符集default-character-set參數不支援中文,可以設置成gbk或utf8來支援中文。

修改對應的編碼

 default-character-set=utf8 
 character-set-server=utf8

*注意:每次修改參數後,必須重新啟動MySQL服務才會有效。

 

(二)資料庫導入位置不對

需要在「表」上右鍵導入。這步主要是排查資料庫導入位置不對而造成的報錯!

(導入圖解:【MySQL篇】Navicat導入MySQL資料庫圖解教程。)

 

三、修改Navicat的"max_allowed_packet"參數

上面都試了還不行,往往都是Navicat的配置問題。

路徑:工具(T)->伺服器監控->MySQL->變數->max_allowed_packet;

//英文版:Tools->Server Monitor->MySQL->Variables->max_allowed_packet;

 

記得先在左側勾選「當前資料庫」,才會顯示右側變數的屬性表,再在變數里尋找max_allowed_packet,將其值改大,改為最大值!!!如果超過他的值,會提示並自動設為最大值。

 

這時候,一般勾選「每個運行中運行多重查詢」也能成功導入資料庫,如果不行就去掉勾選。

 

導入成功後,接著在表上右鍵再刷新下資料庫。

 

總結

紙上得來終覺淺,絕知此事要躬行---陸遊。

 

名稱時間
最後編輯日期: 2020 年 12 月 03 日