Я получаю вышеуказанную ошибку при использовании двух серверов для подключения к одной и той же базе данных 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