乐趣区

关于python:pymysql-处理-连接超时最好的解决方案

谬误类型

在用 mysql 客户端对数据库进行操作时,关上终端窗口,如果一段时间没有操作,再次操作时,经常会报如下谬误:

  • ERROR 2013 (HY000): Lost connection to MySQL server during query
  • ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect...

好的,让咱们看看这两个谬误对应 pymysql 中的异样类型吧

2013 错误码对应的是什么异样类型?

先看第一个 2013 对应的异样类型
constants/CR.py

CR_SERVER_LOST = 2013

connections.py

raise err.OperationalError(
    CR.CR_SERVER_LOST,
    "Lost connection to MySQL server during query",
)

能够看到对应的谬误类型是 OperationalError

2006 错误码对应的是什么异样类型?

再看第二个 2006 对应的异样类型
constants/CR.py

CR_SERVER_GONE_ERROR = 2006

connections.py

raise err.OperationalError(CR.CR_SERVER_GONE_ERROR, "MySQL server has gone away (%r)" % (e,)
)

能够看到对应的谬误类型是 OperationalError

operational 是什么意思?

看看 有道翻译 中的解释吧

operational
英 [ˌɒpəˈreɪʃənl] 美 [ˌɑːpəˈreɪʃənl]
adj.(机器、设施等)失常运行的,可应用的;操作的,经营的,业务的;军事行动的;操作论的,操作主义的

从这个翻译来看,这个异样类是一个很宽泛的异样类

参考文章:

MySQL 中 interactive_timeout 和 wait_timeout 的区别
[玩转 MySQL 之二]MySQL 连贯机制浅析及运维
MySQL 数据库连贯超时主动断开的解决方案

退出移动版