【MySQL篇】Navicat匯入SQL大檔案報錯終極解決方案

NDASH發表於2020-12-03

面對大資料庫檔案(一般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 日

相關文章