连接到Django后端的AWS Postgres实例

Bat*_*man 7 django postgresql amazon-web-services django-database

我在AWS上创建了一个PostgreSQL数据库,我想将它用于Django项目.

我修改了settings.py以便它有

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': <db name>,
        'USER': <user>,
        'PASSWORD': <password>,
        'HOST': 'projectdevelopment.foobar.us-east-1.rds.amazonaws.com',
        'PORT': '5432',
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这看起来很简单.除了当我尝试进行迁移时,我收到此错误:

django.db.utils.OperationalError: could not translate host name "projectdevelopment.foobar.us-east-1.rds.amazonaws.com" to address: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)

该值projectdevelopment.foobar.us-east-1.rds.amazonaws.com已直接从RDS控制台中端点下的值复制.

我错过了一个设置,还是配置错误了?或两者?

Sat*_*dra 6

确保服务器已启动并从Amazon端运行.

检查一下issue,他们有同样的问题.


要么

尝试使用'ENGINE' = 'django.db.backends.postgresql_psycopg2',检查一下SO answer

阅读: 如何在Ubuntu 14.04上使用Django应用程序使用PostgreSQL


要么

尝试分配DATABASE_URLRDS postgres连接到您的django应用程序.

DATABASE_URL=postgis://<user>:<password>@<host>:<port>/<db-name>
Run Code Online (Sandbox Code Playgroud)

注意:按照相同的语法进行声明DATABASE_URL,请检查上面url中的这些特殊字符.

  • : 在用户和密码之间,
  • @ 密码和主机之间,
  • : 主机和端口之间,
  • / 端口和数据库名称之间

并将其分配给settings.py中的 DATABASES

DATABASES['default'] = DATABASE_URL
Run Code Online (Sandbox Code Playgroud)

在你的情况下DATABASE_URL将是.

postgis:// <user>:<password>@ projectdevelopment.foobar.us-east-1.rds.amazonaws.com:5432/<db name>

  • 5432 是postgres服务器使用的默认端口