導致 MySQL server has gone away
問題出現的最常見原因是服務超時跟連接已關閉。
默認情況下,當沒有進行任何操作,MySQL 服務會在 8 小時之後關閉,通過在啓動 mysqld 時設置 wait_timeout
變量可以改變這個時間限制,參考 “Server System Variables”。
我遇到這個問題是因爲執行 sql 文件時,數據量過大的原因。這時候需要增大執行量,在啓動 mysqld 時設置 max_allowed_packet
,默認是 1M
mysqld --max_allowed_packet=16M
也可以在配置文件如 my.ini 中的 [mysqld] 部分中添加
max_allowed_packet=16M
導致這個問題的原因有很多,比如
- 正在運行的線程被結束
- 嘗試在關閉連接後進行查詢操作
- 客戶端 TCP/IP 連接超時
…