解決MySQL server has gone away

針對MySQL server has gone away,大概瀏覽了一下,主要多是由於如下幾種緣由:
一種多是發送的SQL語句太長,以至超過了max_allowed_packet的大小,若是是這種緣由,你只要修改my.cnf,加大max_allowed_packet的值便可。

還有一種多是由於某些緣由致使超時,好比說程序中獲取數據庫鏈接時採用了Singleton的作法,雖然屢次鏈接數據庫,但其實使用的都是同一個鏈接,並且程序中某兩次操做數據庫的間隔時間超過了wait_timeout(SHOW STATUS能看到此設置),那麼就可能出現問題。最簡單的處理方式就是把wait_timeout改大,固然你也能夠在程序裏時不時順手mysql_ping()一下,這樣MySQL就知道它不是一我的在戰鬥。mysql

解決MySQL server has gone away

一、應用程序(好比PHP)長時間的執行批量的MYSQL語句。最多見的就是採集或者新舊數據轉化。
解決方案:
在my.cnf文件中添加或者修改如下兩個變量:
wait_timeout=2880000
interactive_timeout = 2880000    
關於兩個變量的具體說明能夠google或者看官方手冊。若是不能修改my.cnf,則能夠在鏈接數據庫的時候設置CLIENT_INTERACTIVE,好比:
sql = "set interactive_timeout=24*3600";
mysql_real_query(...)


二、執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。好比,圖片數據的處理
解決方案:
在my.cnf文件中添加或者修改如下變量:
max_allowed_packet = 10M(也能夠設置本身須要的大小)
max_allowed_packet 參數的做用是,用來控制其通訊緩衝區的最大長度。 sql

相關文章
相關標籤/搜索