MySQL server has gone away

MySQL server has gone away

利用phpMyadmin導入備份的資料庫時發生MySQL server has gone away,初學者丹尼看到這非常吃驚,心想資料庫匯不進去怎麼辦?(約100MB),後來查詢一下才知道這問題對於一些行家應該不陌生:

將資料庫內容傳入MySQL Server時Server會去查看參數max_allowed_packet,如果傳入的資料大於設定值就可能會發生此問題,當然有另一個情況是Server發生Timeout也會返回此訊號,基本上有很多情況所回應的都是這個訊號,不過此次的狀況是因為傳入的資料庫檔太大了!預設值是設定在max_allowed_packet=16M,只要將它再設定大於我現在用的資料庫大小就行,此次直接設定在160M

開啟php.cnf尋找keyword:max_allowed_packet

(Debian請找/etc/mysql/my.cnf或/etc/php5/apache2/php.ini)

max_allowed_packet  = 16M

改成

max_allowed_packet  = 160M

再重新啟動Web Server即完成。

但在這裡如果您不是Web Server管理者,但你有mysql的權限該如何?此時你要利用mysql來改變本來的設定:

mysql -u"帳號" -p"密碼"

登入後變更預設值:

mysql> set global max_allowed_packet=1024*1024*160;
Query OK, 0 rows affected (0.00 sec)

設定好後查看一下值是否有變更成功:

mysql> show global variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 167772160 |
+--------------------+-----------+
1 row in set (0.00 sec)

mysql>

參考資料

MySQL server has gone away 问题的解决方法

How do I fix the error “Mysql Server has gone away”?