天天看點

MySQL server has gone away

一、MySQL server has gone away mysql資料庫出現這種問題是一個很不友好的錯誤提示,需要多方位的考慮,才能定位問題所在。

出現這個問題主要要考慮到下面三點:

1、wait_timeout

wait_timeout 預設是28800,機關秒,即8個小時,除非你改小了,基本上就可以排除這個問題。

2、interactive_timeout

interactive_timeout 預設是28800,機關秒,即8個小時

3、max_allowed_packet

max_allowed_packet 預設是4194304,機關位元組B,即預設值是4M,在導入資料的時候,如果檔案大于4M了,就會抛出這個錯誤的。

二、遇到問題事例:Navicat導入mysql提示[ERR] 2006 - MySQL server has gone away

方法一:

找到伺服器mysql安裝目錄下的my.ini(linux系統下為my.cnf)配置檔案,加入以下代碼:

max_allowed_packet=500M

方法二:

打開navicat的菜單中的tools,選擇server monitor,然後在左列選擇資料庫,右列則點選variable表單項,尋找到max_allowed_packet将其值改大(wait_timeout、interactive_timeout 這兩個值根據自身服務情況進行相應修改)。  

漢化版在菜單中,工具-->伺服器監控-->在左側資料庫連接配接清單前勾選要操作的資料庫連接配接-->在右側變量中找到max_allowed_packet将其值改大(wait_timeout、interactive_timeout 這兩個值根據自身服務情況進行相應修改)。

注:看到别人對三個參數有設定如下

wait_timeout=288000

interactive_timeout = 288000

三個參數注釋如下:

max_allowed_packet 是mysql允許最大的資料包,也就是你發送的請求;此參數的作用是,用來控制其通信緩沖區的最大長度

wait_timeout是等待的最長時間,這個值大家可以自定義,但如果時間太短的話,逾時後就會現了MySQL server has gone away #2006錯誤。

interactive_timeout針對互動式連接配接

三、interactive_timeout和wait_timeout參數差別

interactive_timeout針對互動式連接配接,wait_timeout針對非互動式連接配接。所謂的互動式連接配接,即在mysql_real_connect()函數中使用了CLIENT_INTERACTIVE選項。

說得直白一點,通過mysql用戶端連接配接資料庫是互動式連接配接,通過jdbc連接配接資料庫是非互動式連接配接。