首頁 >資料庫 >mysql教程 >mysql匯入大批量資料出現MySQL server has gone away的解決方法

mysql匯入大批量資料出現MySQL server has gone away的解決方法

jacklove
jacklove原創
2018-06-08 23:20:362751瀏覽

因為工作需要,需要導入一個200M左右的sql到user函式庫

#執行指令

mysql> use user
Database changed
mysql> source /tmp/user.sql

導入的過程中出現MySQL server has gone away錯誤,資料導入失敗。

錯誤訊息如下:

ERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    11Current database: userERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    12Current database: userERROR 2006 (HY000): MySQL server has gone awayERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    13Current database: user

開始以為是超時導致,因此調大了 connect_timeoutwait_timeout 的值。

重新執行後問題依舊。
解決方法:

查看資料,發現了max_allowed_pa​​cket 參數,
官方解釋是適當增大 max_allowed_pa​​cket 參數可以讓client端到server端傳遞大數據時,系統能夠分配更多的擴充記憶體來處理。

查看mysql max_allowed_pa​​cket的值

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+| Variable_name      | Value   |
+--------------------+---------+| max_allowed_packet | 4194304 |
+--------------------+---------+

可以看到是4M,然後調大為256M(1024*1024*256)

mysql> set global max_allowed_packet=268435456;
Query OK, 0 rows affected (0.00 sec)mysql> show global variables like 'max_allowed_packet';
+--------------------+-----------+| Variable_name      | Value     |
+--------------------+-----------+| max_allowed_packet | 268435456 |
+--------------------+-----------+1 row in set (0.00 sec)

修改後執行導入,一切正常,解決問題。
注意:
使用set global指令修改 max_allowed_pa​​cket 的值,重啟mysql後會失效,還原為預設值。

如果想重新啟動後不還原,可以開啟 my.cnf 文件,加入 max_allowed_pa​​cket = 256M 即可。

這篇說明了mysql導入大批量資料出現MySQL server has gone away的解決方法,更多相關內容請關注php中文網。

相關推薦:

mysql 搜尋附近N公里內資料的實例

mysql 連線閃斷自動重連的方法

php 實作HTML實體編號與非ASCII字串相互轉換類別

#

以上是mysql匯入大批量資料出現MySQL server has gone away的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn