亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL服務器消失了-恰好60秒

MySQL服務器消失了-恰好60秒

LEATH 2019-12-17 15:24:16
我最近發現,早先運行良好的SQL查詢現在在60秒后超時并引發錯誤。該查詢速度很慢,但是作為日常工作的一部分運行,因此它本身不是問題(因此請不要建議我對其進行優化)。通過運行“ select SLEEP(120);”,我能夠一致地重現該錯誤。從PHP如下所示。但是,從MySQL客戶端運行相同的語句成功(返回0)。我試過調整wait_timeout(設置為28800),但是沒有運氣。我還重新啟動了數據庫服務器和計算機本身。它總是總是在60秒后超時的事實向我表明,這很可能是一種設置,而不是有限的資源問題。我正在運行:Windows Server 2003MySql 5.1.36-社區PHP 5.3以下是我的測試代碼,SHOW VARIABLES的輸出和結果謝謝!碼:set_error_handler("sqlErrorHandler");set_time_limit(12000);$link = mysql_connect("$MYSQL_Host","$MYSQL_User","$MYSQL_Pass");mysql_select_db($MYSQL_db, $link);echo "mysql_ping = " . (mysql_ping($link) ? "LIVE" : "DEAD") . "<br /><br />"; $sql = "SELECT SLEEP(120);";$start = microtime(true);mysql_query($sql, $link);echo "**query done**<br />";allDone();function allDone(){ global $start, $sql; $end = microtime(true); echo "sql : $sql<br />"; echo "elapsed : " . ($end - $start) . "<br />"; echo "<br />";}function sqlErrorHandler($errno, $errstr, $errfile, $errline){ global $link; echo "Error : $errno<br />$errstr<br />"; echo "mysql_ping : " . (mysql_ping($link) ? "LIVE" : "DEAD") . "<br />";  echo "<br />"; allDone();}輸出:mysql_ping = LIVEError : 2mysql_query() [function.mysql-query]: MySQL server has gone awaymysql_ping : DEADsql : SELECT SLEEP(120);elapsed : 60.051116943359Error : 2mysql_query() [function.mysql-query]: Error reading result set's headermysql_ping : DEADsql : SELECT SLEEP(120);elapsed : 60.0511469841**query done**sql : SELECT SLEEP(120);elapsed : 60.051155090332
查看完整描述

3 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

當我遇到此問題時,它不是由wait_timeout(設置為默認的8小時)引起的,而是由具有大型INSERT語句的max_allowed_packet引起的。從PHP更改max_allowed_packet無效,但是當我在/etc/my.cnf的mysqld部分中更改它并重新啟動MySQL服務器時,問題消失了。


查看完整回答
反對 回復 2019-12-17
  • 3 回答
  • 0 關注
  • 588 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號