編碼的世界 / 優質文選 / 歷史

mysql導入較大sql文件,出現MySQL server has gone away的解決方法


2022年7月24日
-   


使用命令執行:
 mysql> use auction-oa
Database changed
mysql> source /tmp/all_20171028_010101.sql

  • 導入的過程中出現MySQL server has gone away錯誤,數據導入失敗。
  • 錯誤信息如下:

ERROR 2006 (HY000): MySQL server has gone away
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect
Connection id: 11
Current database: auction-oa

解決方法:
  • 查看資料,發現了 max_allowed_packet 參數,
  • 官方解釋是適當增大 max_allowed_packet 參數可以使client端到server端傳遞大數據時,系統能夠分配更多的擴展內存來處理。
  • 查看mysql max_allowed_packet的值


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


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

修改後執行導入,一切正常,解決問題。
注意:
使用set global命令修改 max_allowed_packet 的值,重啟mysql後會失效,還原為默認值。
如果想重啟後不還原,可以打開 my.cnf 文件,添加 max_allowed_packet = 356M 即可。

熱門文章