發生MySQL server has gone away的最常見原因是連接閑置超時,被服務器中斷連接。默認情況下,服務器關閉空閑時間超過8小時的連接,可以通過設置變量wait_timeout,來改變默認值8小時,同時還需要修改interactive_timeout。
wait_timeout:服務器關閉非交互連接之前等待活動的秒數。
interactive_timeout:服務器關閉交互式連接前等待活動的秒數
MySQL命令行默認是重連的,但有一些應用程序沒有重連的機制,往往會導致執行失敗。
導致MySQL server has gone away錯誤的一些其他原因如下:
(1).使用KILL命令或mysqladmin kill命令殺死了正在運行的線程
(2).在關閉了與服務器的連接后試圖運行查詢
(3).在客戶端的一側遇到TCP/IP連接超時錯誤
(4).在服務器端遇到超時錯誤,而且禁止了客戶端中的自動連接機制
(5).如果向服務器發出了不正確或過大的查詢,也會遇到這類問題,如果mysqld收到過大的或者無序的信息包,它會認為客戶端出錯并關閉連接。如果需要執行較大的查詢,則可以通過設置服務器的max_allowed_packet
變量,增加查詢限制值,該變量的默認值是1MB。