當前位置:編程學習大全網 - 源碼下載 - MySQL server has gone away報錯原因分析

MySQL server has gone away報錯原因分析

在執行壹個sql文件時 mysql -h 127.0.0.1 -uroot study -e"source b.sql" ,報錯 MySQL server has gone away 。上網查解決辦法,按照網上的解決方法壹步步操作,最終找到原因並且解決了,覺得有必要總結下這個問題發生的原因及解決辦法,避免後面再繼續踩坑。

執行以下命令,查看mysql的運行時長。

uptime數值很大,表明mysql服務運行很久,說明最近MySQL服務器沒有重啟過。

或者查看MySQL的報錯日誌,看看有沒有重啟的信息。

如果日誌沒有相關信息,也表明mysql服務最近沒有重啟過,可以繼續檢查下面幾項情況。

如果程序使用的是長連接,則這種情況的可能性會比較大。

即,某個長連接很久沒有新的請求發起,達到了server端的timeout,被server強行關閉。

此後再通過這個connection發起查詢的時候,就會報錯server has gone away。

如下命令設置連接超時為5秒。

再執行 SELECT NOW(); ,通過這個connection發起查詢的時候,就會報錯server has gone away。

實際上wait_timeout=28800,不是造成文章開頭的原因。

這種情況和情況2相似,只是發起者是DBA或者其他job。發現有長時間的慢查詢執行kill xxx導致。

當查詢的結果集超過 max_allowed_packet 也會出現這樣的報錯。

查看執行SQL執行文件大小是否超過 max_allowed_packet ,如果超過則需要調整參數,或者優化語句。

計算發現SQL執行文件最大只能是16M,而文章開頭執行的a.sql有24M。

修改參數,max_allowed_packet 調整為28M。

重新再執行`mysql -h 127.0.0.1 -uroot study -e"source b.sql"``成功,說明原因是情況4造成的。

  • 上一篇:無廣告插件源代碼
  • 下一篇:魔獸世界奧術死靈法師PVE的專精怎麽加~ ~ ~
  • copyright 2024編程學習大全網