Ошибка 2006 при закрытии базы данных с использованием версии 1.3.14, но не 1.3.13 в mysqlclient python 2.7 или 3.5+ - PullRequest
0 голосов
/ 13 октября 2019

Я делаю кодирование на трекере проблем с обзором. Наш travis ci начал давать сбой, когда был выпущен релиз 1.3.14 mysqlclient. Тест кода в порядке с 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

Ранее поиск сообщал, что это может быть исправлено путем увеличения значения max_allowed_packet на сервере mysql. Я изменил это до 500M (с 16M). Но ошибка все еще существует.

Не все тесты mysql дают сбой, только 23 из 140 дают сбой.

Кто-нибудь знает внутреннюю часть _mysql или клиентскую библиотеку, которая может дать мне подсказку относительнопочему закрытие не удается?

Я предполагаю, что закрытие просто разрушает сокет и соединение, но, может быть, оно делает больше ??

Понижение до 1.3.13 "решает" проблему, ноне очень хорошее решение, так как текущая версия 1.4.x. Я проверил, используя текущую версию, используя установку pip, и она не работает так же, как 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.

Я надеюсь получить некоторую подсказку, почему это такпроисходящее или другие вещи, на которые нужно смотреть.

...