mysql匯入較大sql檔案,出現MySQL server has gone away的解決方法
阿新 • • 發佈:2018-12-26
問題描述:工作需要檢視備份資料,故將mysql資料庫的定時備份資料匯入到mysql中,出現如下圖所示問題。
使用命令執行:
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 |
+--------------------+---------+
可以看到是4M,然後調大為256M(1024 x 1024 x 356)
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 即可。