Тесты Django внезапно выходят из строя без видимых причин

У меня есть проект django с сотнями модульных тестов, и после большого обновления, которое добавило еще около 50 тестов, все тесты проекта, которые создают экземпляр определенной модели, терпят неудачу со следующим сообщением об ошибке:

Traceback (most recent call last):
  File ".../venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql
    cursor.execute(sql, params)
  File ".../venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File ".../venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File ".../venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 79, in _execute
    self.db.validate_no_broken_transaction()
  File ".../venv/lib/python3.9/site-packages/django/db/backends/base/base.py", line 437, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

During handling of the above exception, another exception occurred:
  File ".../venv/lib/python3.9/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File ".../venv/lib/python3.9/site-packages/django/db/models/query.py", line 653, in first
    for obj in (self if self.ordered else self.order_by('pk'))[:1]:
  File ".../venv/lib/python3.9/site-packages/django/db/models/query.py", line 274, in __iter__
    self._fetch_all()
  File ".../venv/lib/python3.9/site-packages/django/db/models/query.py", line 1242, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File ".../venv/lib/python3.9/site-packages/django/db/models/query.py", line 55, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File ".../venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1145, in execute_sql
    cursor.close()
  File ".../venv/lib/python3.9/site-packages/MySQLdb/cursors.py", line 83, in close
    while self.nextset():
  File ".../venv/lib/python3.9/site-packages/MySQLdb/cursors.py", line 137, in nextset
    nr = db.next_result()
MySQLdb._exceptions.OperationalError: (2006, '')

Обновление не изменило ни одной модели, и никаких миграций не было сделано.

Тесты вроде бы работают, если я меняю class SomeTest(TestCase) на class SomeTest(TransactionTestCase) во всех тестах, но затем они становятся чрезвычайно медленными и выполняются в течение нескольких часов. (До этой ошибки они обычно выполнялись за 2 минуты)

Я использую python 3.9, django 2.2.28 и mysql 8.0.23.

Я также попробовал обновить версию до django 3.2, но это не помогло решить проблему.

Вернуться на верх