【问题标题】:Issues connecting to Amazon RDS Postgres database on node.js using sequelize ORM使用 sequelize ORM 连接到 node.js 上的 Amazon RDS Postgres 数据库的问题
【发布时间】:2016-06-04 20:51:39
【问题描述】:

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

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

未处理的拒绝 SequelizeHostNotFoundError: getaddrinfo ENOTFOUND [主持人]。

我可以通过 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]

任何帮助将不胜感激。提前致谢!

【问题讨论】:

    标签: javascript node.js postgresql amazon-web-services sequelize.js


    【解决方案1】:

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

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

    【讨论】:

    • 我仍在与此作斗争。获取连接超时错误。您能否详细说明您的解决方案?
    • 嗨 Nuru,您是否能够通过 curl 或 pgAdmin 之类的工具在本地连接到您的数据库?如果是这样,之后您需要确保检查 RDS 和 Elastic Beanstalk 实例之间的安全组,并确保“入站”设置配置正确。
    【解决方案2】:

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

    类似:

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

    我们最终的用户名:fred,密码:xj78,其他所有内容均为空白。

    将问号转义为 %3F 可以解决问题。

    【讨论】:

    • 遇到了同样的问题。更改密码解决了这个问题。
    猜你喜欢
    • 2014-05-06
    • 2021-10-16
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多