1. 程式人生 > >mysql匯入大量資料時報MySQL server has gone away錯誤的解決辦法

mysql匯入大量資料時報MySQL server has gone away錯誤的解決辦法

  在我們使用mysql匯入大檔案sql時可能會報MySQL server has gone away錯誤,該問題是max_allowed_packet配置的預設值設定太小,只需要相應調大該項的值之後再次匯入便能成功。該項的作用是限制mysql服務端接收到的包的大小,因此如果匯入的檔案過大則可能會超過該項設定的值從而導致匯入不成功!下面我們來看一下如何檢視以及設定該項的值。

檢視 max_allowed_packet 的值

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
可以看到預設情況下該項的大小隻有4M,接下來將該值設定成64M(1024*1024*64)
mysql> set global max_allowed_packet=67108864;
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 67108864 |
+--------------------+-----------+
1 row in set (0.00 sec)
通過調大該值,一般來說再次匯入應該就能成功了,如果任然報錯,則繼續再調大一些就行,請注意通過在命令列中進行設定只對當前有效,重啟mysql服務之後則恢復預設值,但可以通過修改配置檔案(可以在配置檔案my.cnf新增max_allowed_packet=64M即可)來達到永久有效的目的,可其實我們並不是經常有這種大量資料的匯入操作,所以個人覺得通過命令列使得當前配置生效即可,沒有必要修改配置檔案。