MySQL server has gone away的問題解決
一、可能是mysql連接超時
原因:mysql長連接時,很長時間沒有新的請求發(fā)起到達服務(wù)端,當這個時間超過配置的最大超時時間時,mysql就會強行關(guān)閉鏈接。此后再通過這個connection發(fā)起查詢的時候,就會報錯server has gone away。
解決辦法:可以將timeout時間設(shè)置長一點:
set global wait_timeout =3600 ; //非交互式鏈接
set global interactive_timeout=3600 ; //交互式鏈接
但是這樣會長時間占用mysql鏈接,消耗資源。
二、可能是發(fā)送的SQL語句太長
原因:mysql服務(wù)器端和客戶端在一次傳送數(shù)據(jù)包的過程中,數(shù)據(jù)包的大小大于max_allowed_packet設(shè)置的值。
解決辦法:可以將max_allowed_packet值設(shè)置大一點,set global max_allowed_packet=3600。
三、可能MySQL 服務(wù)宕了
可以查看mysql的運行時長:show global status like 'uptime'; 。來判斷是否屬于這個原因引起的。
uptime很長說明mysql運行很長時間了,排除mysql服務(wù)宕機的可能。
擴展:
應(yīng)用程序長時間的執(zhí)行批量的MYSQL語句。執(zhí)行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。比如,圖片數(shù)據(jù)的處理。都容易引起MySQL server has gone away。
解決MySQL server has gone away :
1、應(yīng)用程序長時間的執(zhí)行批量的MYSQL語句。最常見的就是采集或者新舊數(shù)據(jù)轉(zhuǎn)化?;蛘唛L時間閑置數(shù)據(jù)庫連接
解決方案:
在my.cnf/my.ini文件中添加或者修改以下兩個變量:
wait_timeout=2880000 interactive_timeout = 2880000
如果不能修改my.cnf/my.ini,則可以在連接數(shù)據(jù)庫的時候設(shè)置CLIENT_INTERACTIVE,比如:
sql = "set interactive_timeout=24*3600"; mysql_real_query(...)
2、執(zhí)行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。比如,圖片數(shù)據(jù)的處理
解決方案:
在my.cnf/my.ini文件中添加或者修改以下變量:
max_allowed_packet = 10M(也可以設(shè)置自己需要的大小)
max_allowed_packet 參數(shù)的作用是,用來控制其通信緩沖區(qū)的最大長度。
到此這篇關(guān)于MySQL server has gone away的問題解決的文章就介紹到這了,更多相關(guān)MySQL server has gone away內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL開啟慢查詢?nèi)罩緇og-slow-queries的方法
MySQL中提供了一個慢查詢的日志記錄功能,可以把查詢SQL語句時間大于多少秒的語句寫入慢查詢?nèi)罩?,日常維護中可以通過慢查詢?nèi)罩镜挠涗浶畔⒖焖贉蚀_地判斷問題所在2016-05-05
mysql 觸發(fā)器創(chuàng)建與使用方法示例
這篇文章主要介紹了mysql 觸發(fā)器創(chuàng)建與使用方法,結(jié)合實例形式分析了mysql 觸發(fā)器基本概念、原理、創(chuàng)建、使用方法及操作注意事項,需要的朋友可以參考下2020-05-05
mysql 5.7.17 安裝教程 附MySQL服務(wù)無法啟動的解決方法
這篇文章主要為大家詳細介紹了mysql 5.7.17安裝教程,并且為大家分享了MySQL服務(wù)無法啟動的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03

