因工作需要,需要導入一個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 away
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 11
Current database: user
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 12
Current database: user
ERROR 2006 (HY000): MySQL server has gone away
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 13
Current database: user
開始以爲是超時導致,因此調大了 connect_timeout 和 wait_timeout 的值。
重新執行後問題依舊。
解決方法:
查看資料,發現了 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*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)
修改後執行導入,一切正常,解決問題。