MySQL server has gone away是告訴我們內存不足或系統原因了,解決辦法只要對mysql配置文件參數進行一些調整即可解決,具體如下.
使用php插入大數據記錄到Mysql的時候,遇到一個問題:
2006:MySQL server has gone away :: insert into ******
經過查找,知道了原因,是Mysql的max_allowed_packet的值設置得過小或者沒有設置,此變量是用來控制其通信緩沖區的最大長度.
解決方法:
[mysqld]
max_allowed_packet = 16M
在my.cnf文件中設置上述變量到mysqld段中,如果沒有就添加.
關于max_allowed_packet的主要解釋如下:
包或任何生成的/中間字符串的最大大小,這個過程大部分發生在load data file中,有時也發生在update,insert中.
包消息緩沖區初始化為net_buffer_length字節,但需要時可以增長到max_allowed_packet字節,該值默認很小,以捕獲大的(可能是錯誤的)數據包.
如果你使用大的BLOB 列或長字符串,你必須增加該值,應同你想要使用的最大的BLOB一樣大,max_allowed_packet的協議限制為1GB,這個值必須是1024的倍數,如果不是1024倍數的值,mysql就會自動四舍五入為最接近的1024的倍數.
當你改變max_allowed_packet的值,你就改變了消息緩沖區的大小,你也應該在客戶端允許的范圍內修改客戶端的buffer大小,在客戶端,max_allowed_packet默認值是1GB,你可以通過命令行或者配置文件,改變客戶端的max_allowed_packet值.
在MySQL5.0.84版本中,會話max_allowed_packet值,還只是只讀的,在5.0.84之前的版本,設置會話中可以設置max_allowed_packet的值,但是沒什么作用.
新聞熱點
疑難解答