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

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

 

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

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

 

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

 

(二)繼續報錯

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

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

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

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

 

二、修改MySQL配置

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

找到MySQL安裝目錄下的my.ini配置文件,查找修改max_allowed_packet參數,再增加wait_timeoutinteractive_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參數不支持中文,可以設置成gbkutf8來支持中文。

修改對應的編碼

 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 日