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>