如何解決在連接至 Amazon RDS MySQL 資料庫執行個體時顯示的錯誤「MySQL server has gone away」?

1 分的閱讀內容
0

我嘗試查詢執行 MySQL 的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體,但收到下列其中一則錯誤訊息: 「MySQL server has gone away」或「Lost connection to server during query」。

簡短描述

如果伺服器逾時並關閉連線,您可能會收到下列其中一個錯誤:

  • CR_SERVER_GONE_ERROR – 用戶端無法將請求傳送至伺服器。
  • CR_SERVER_LOST – 用戶端在寫入伺服器時沒有收到錯誤,但用戶端沒有收到問題的完整答案 (或任何答案)。

如需詳細資訊,請參閱 MySQL 文件中的 MySQL server has gone away

解決方法

請參閱這些錯誤的下列原因和相關解決方法:

  • 如果連線閒置時間過長,則用戶端可能會錯誤地終止連線。若要解決此問題,請確認應用程式逾時比 MySQL 逾時更短,並確保應用程式關閉閒置連線。
  • 如果連線逾時,請透過使用自訂參數群組增加 wait_timeoutinteractive_timeout 參數來增加 MySQL 的逾時。如需詳細資訊,請參閱使用資料庫參數群組
  • 如果產生錯誤的查詢正在擷取大型資料集,請使用自訂參數群組增加 max_allowed_packet 大小參數。如需詳細資訊,請參閱修改資料庫參數群組中的參數
    **注意:**對於 Amazon Aurora,您可以修改參數,並在叢集參數群組中設定參數,以在整個叢集層級套用。在資料庫參數群組中設定參數僅在執行個體層級套用參數。對於 Amazon Lightsail MySQL 資料庫,您必須在使用命令列介面 (CLI) 修改參數之前檢查參數是否可供修改。如需詳細資訊,請參閱更新 Amazon Lightsail 中的資料庫參數。對於 Lightsail 執行個體或伺服器本機 MySQL 資料庫或 Amazon Elastic Compute Cloud (Amazon EC2) MySQL,您可以在 config 檔案中設定參數。您也可以設定全域 xxx,類似於在一般內部部署 MySQL 環境中的設定方式。
  • 如果僅在傳回大型資料集時發生錯誤,則用戶端可能使用較大的 MTU 值 9001。若要解決此問題,請減少用戶端 TCP/IP MTU 值。如需有關變更用戶端 MTU 值的資訊,請參閱設定執行個體的 MTU
  • 如果任何 init_connect 參數設定為不允許處理此參數的值,關聯的用戶端連線可能會失敗。請確保所有 init_connect 參數都已正確處理。確保使用者對作為 init_connect 參數參考的任何程序具有 EXECUTE 許可。
  • 如果所有連線都同時中斷,請確認在發生此問題時其他連線仍在運作。若要解決此問題,請透過檢視 Amazon RDS 事件並檢閱 MySQL 錯誤日誌,來確認 MySQL 資料庫執行個體沒有當機或容錯移轉。

相關資訊

連接至執行 MySQL 資料庫引擎的資料庫執行個體

修改 Amazon RDS 資料庫執行個體