0

我正在使用 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 )

问题仅适用于几张桌子。

在此处输入图像描述

4

1 回答 1

0

MySQL 自动关闭在特定时间段内空闲的连接(wait_timeout对于非交互式连接)。因此,如果空闲时间过多并且连接未更新或连接因服务器重新启动而无效,则可能会发生连接关闭。

SQL-Alchemy在其关于如何处理池断开连接的文档中提到了一些关于如何解决自动断开连接和数据库重新启动问题的策略。

您应该查看的两个选项是在每个查询之前pool_pre_ping添加一个参数SELECT 1以检查连接是否仍然有效,否则连接将被回收。

另一种选择是pool_recycle时间应该总是少于你的 mysql wait_timeout。在此时间之后,连接会自动回收到不在wait_timeout.

您可以使用以下命令检查 MySQL 中的连接

SHOW PROCESSLIST;

您应该在其中看到所有打开的连接以及它们所处的状态。

于 2020-08-18T07:19:26.057 回答