pymysql.err.OperationalError-查询期间与MySQL服务器的连接断开

问题描述

我正在使用Python脚本将记录插入MysqL数据库表中。 该脚本失败,并显示以下错误消息。

MysqL版本是8.0.17 Python版本3.6.5

(pyMysqL.err.OperationalError)(2013,'在查询过程中丢失了与MysqL服务器的连接([WinError 10060]连接尝试失败,因为一段时间后被连接方未正确响应,或者由于建立连接而建立的连接失败主机未能响应)')

(此错误的背景位于:http://sqlalche.me/e/e3q8

此问题仅适用于几张桌子。

enter image description here

解决方法

MySQL自动关闭在特定时间段内处于空闲状态的连接(对于非交互式连接,为wait_timeout)。因此,如果空闲时间过多,并且由于服务器重新启动而导致连接没有更新或连接无效,则可能会关闭您的连接。

SQL-Alchemyhow to deal with pool disconnects的文档中提到了几种解决自动断开连接和数据库重新启动问题的策略。

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

另一个选择是pool_recycle时间,该时间应始终小于您的mysql wait_timeout。此时间过后,连接将自动回收以不再在wait_timeout中运行。

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

SHOW PROCESSLIST;

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...