【发布时间】:2019-06-29 21:00:57
【问题描述】:
我在使用两台服务器连接到同一个 Aurora DB 时遇到上述错误。
我们在 Elastic Beanstalk 上运行一个简单的 Django REST Framework,它连接到 Aurora 数据库集群。每当我们启动数据库并从 EBS 服务器连接测试 API 时,都可以正常运行。但是,如果我随后启动连接到同一数据库的本地开发服务器,则在转到本地服务器上的同一路由时会出现操作错误。
- 我尝试增加'connect_time'、'interactive_timeout'、'max_execution_time'、'wait_timeout'、'max_allowed_packet'、 和 'max_user_connections' 递增到最大值。没有变化。
- 查询不应该很大,因为表中只有大约 20 项,而且大多数时候我们查询的是一项。
- 我们不会在任何地方手动管理连接,因此我们不会不小心过早关闭连接。
- 我翻阅了 MySQL 日志,只发现以下消息:
Aborted connection ## to db: 'db_name' user: 'username' host: 'host_ip' (读取通信数据包时出错)。这似乎很笼统,并且暗示开发服务器上的某些东西正在关闭连接。
- 让开发服务器停止抛出此异常的唯一方法是重新启动 Aurora DB。
- Django 数据库设置将 CONN_MAX_AGE 设置为 0,这对我来说最有意义。
- 我创建了一个新的 Aurora 数据库实例,其中包含新的迁移和表中的一个条目,但存在相同的问题。
此外,如果我打开 Django shell 并使用模型运行一个简单的查询,Beanstalk 服务器将开始抛出 InterfaceError(0, '')。在重新启动 Aurora 数据库之前,这种情况仍然存在。
我已经挖掘了许多来源,但还没有找到解决办法。其他人有什么想法吗?
版本信息
- Django == 2.1.5
- Django REST 框架 == 3.9.1
- MySQL 兼容引擎 == 5.7.12
【问题讨论】:
-
也许是时候支持 Aurora 了。
-
5.7.12 是不是有点老了。
标签: mysql django python-3.x django-rest-framework amazon-aurora