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的区别

你可能感兴趣的