我在综述问题跟踪器上进行了一些编码。当mysqlclient的1.3.14版本发布时,我们的travis ci开始失败。代码在1.3.13上测试正常。我在发行说明中看不到任何可以解释此问题的信息。
更多详细信息,请访问:https://issues.roundup-tracker.org/issue2551025
摘要如下:
所有失败都发生在这段代码中:
def sql_close(self):
self.log_info('close')
try:
> self.conn.close()
E OperationalError: (2006, '')
roundup/backends/back_mysql.py:589: OperationalError
较早的搜索报告此问题可以通过增加mysql服务器上的max_allowed_packet值来解决。我将其更改为500M(从16M)。但是错误仍然存在。
不是所有的mysql测试都失败,140个中只有23个失败。
有人知道_mysql或客户端库的内部结构,这些人可以为我提供关闭失败原因的线索吗?
我认为闭合只是会断开套接字和连接,但是也许它还能做更多?
降级到1.3.13可以解决此问题,但由于当前版本为1.4.x,因此不是一个很好的解决方案。我已经通过pip install使用当前版本进行了测试,但失败的方式与1.3.14相同。
引发错误的代码是:
def sql_close(self):
self.log_info('close')
try:
> self.conn.close()
E OperationalError: (2006, '')
roundup/backends/back_mysql.py:589: OperationalError
我认为某些测试中有一条代码路径会导致对该函数的双重调用。但是,防止这种情况的尝试并没有阻止错误。
我希望关闭可以关闭数据库连接,而不会引发OperationalError。
我希望找到一些线索,以了解为什么会发生这种情况或要看其他事情。