使用 sequelize ORM 连接到 node.js 上的 Amazon RDS Postgres 数据库时出现问题

Issues connecting to Amazon RDS Postgres database on node.js using sequelize ORM

我目前正在努力将在 Heroku 中设置的环境迁移到 Amazon Web Services 堆栈(RDS PostgreSQL、Elastic Beanstalk)。

我在尝试通过 sequelize.js ORM 连接到 PostgreSQL 时遇到了一些问题。以下错误消息:

Unhandled rejection SequelizeHostNotFoundError: getaddrinfo ENOTFOUND [host].

我可以通过 pgAdmin 连接到数据库,所以我知道该服务正在运行,并且以下配置已在 Heroku 上运行:

    sequelize = new Sequelize(process.env.DATABASE_URI, {
        dialect: 'postgres',
        protocol: 'postgres',
        logging: true,
        timestamps: false
    })

DATABASE_URI 格式如下:

postgres://[db_username]:[db_password]@[hostname]:[port]/[db_name]

如有任何帮助,我们将不胜感激。提前致谢!

我能够在这里解决我的问题。本质上,我通过在环境中正确设置以下内容来解决它。:

  1. 正确格式化 URI -(按照上面的语法,我能够让它工作)
  2. 为 Amazon RDS 和 Elastic Beanstalk 启用安全规定 - 我必须为 Elastic Beanstalk 运行 所在的安全组/实例角色启用对 Amazon RDS 实例的入站访问。 (我陷入了这样一个事实,即我能够通过本地计算机访问 RDS。默认情况下,RDS 似乎设置了您正在使用的 IP,以便能够使用它……这是有道理的……)

我有一个非常相似的问题,结果我的密码中有一个问号 - 导致一半的密码和连接的其余部分 URL 被忽略(显然是 URL搜索部分)。

类似于:

new Sequelize("postgres://fred:xj78?23@example.com/db");

我们最终得到用户名:fred,密码:xj78,其他一切都是空白。

将问号转义为 %3F 解决了这个问题。