[英]sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')
[英]pymysql.err.OperationalError - Lost connection to MySQL server during query
我正在使用 Python 腳本將記錄插入 MySQL 數據庫表。 腳本失敗並顯示以下錯誤消息。
MySQL 版本為 8.0.17 , Python 版本為 3.6.5
(pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query ([WinError 10060] 連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或建立連接失敗,因為連接主機失敗回復)')
(此錯誤的背景: http://sqlalche.me/e/e3q8 )
問題僅適用於幾張桌子。
MySQL 自動關閉在特定時間段內空閑的連接(對於非交互式連接, wait_timeout
)。 因此,如果空閑時間過多並且連接未更新或連接因服務器重新啟動而無效,則可能會發生連接關閉。
SQL-Alchemy在其關於如何處理池斷開連接的文檔中提到了一些關於如何解決自動斷開連接和數據庫重新啟動問題的策略。
您應該查看的兩個選項是pool_pre_ping
參數,該參數在每個查詢之前添加SELECT 1
以檢查連接是否仍然有效,否則將回收連接。
另一個選項是pool_recycle
時間,它應該總是小於你的 mysql wait_timeout
。 在此時間之后,連接會自動回收,不會在wait_timeout
中運行。
您可以使用以下命令檢查 MySQL 中的連接
SHOW PROCESSLIST;
您應該在其中看到所有打開的連接以及它們所處的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.