Django OperationalError (2013, «Потерянное соединение с сервером MySQL во время запроса») - PullRequest
0 голосов
/ 06 февраля 2019

Я получаю вышеуказанную ошибку при использовании двух серверов для подключения к одной и той же базе данных Aurora.

Мы запускаем простую Django REST Framework на Elastic Beanstalk, которая подключается ккластер Aurora DB.Всякий раз, когда мы запускаем БД и тестируем API с сервера EBS, соединения проходят нормально.Однако, если я затем запускаю свой локальный сервер разработки, подключающийся к той же БД, я получаю операционную ошибку при переходе на тот же маршрут на локальном сервере.

  • Я пытался увеличить «connect_time», 'interactive_timeout', 'max_execution_time', 'wait_timeout', 'max_allowed_packet' и 'max_user_connections' с шагом до максимума.Без изменений.
  • Запрос не должен быть большим, поскольку в таблице только около 20 элементов, и большую часть времени мы запрашиваем один элемент.
  • Мы не управляемподключение вручную в любом месте, так что это не значит, что мы случайно закрыли соединение преждевременно.
  • Я копался в журналах MySQL и нашел только следующее сообщение:

    Прервано соединение ## с db: 'db_name'user:' username 'host:' host_ip '(Ошибка чтения пакетов связи).Это кажется довольно общим и подразумевает, что что-то на сервере разработки закрывает соединение.

  • Единственный способ заставить сервер разработки прекратить генерировать это исключение - перезагрузить Aurora DB.
  • Настройки базы данных Django имеют значение CONN_MAX_AGE, равное 0, что является для меня наиболее целесообразным.
  • Я создал новый экземпляр Aurora DB со свежими миграциями и одной записью в таблице с той жепроблемы.

Кроме того, если я открою оболочку Django и выполню простой запрос к моделям, сервер Beanstalk начнет запускать InterfaceError (0, '').Опять же, это продолжается до перезагрузки Aurora DB.

Я перекопал несколько источников, но пока не нашел исправления.У кого-нибудь еще есть идеи?

Информация о версии

  • Django == 2.1.5
  • Django REST Framework == 3.9.1
  • MySQLДвигатель совместимости == 5.7.12

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете попробовать использовать коннектор MySQL PyMySQL == 0.7.9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...