首页 文章

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

提问于
浏览
6

我目前正致力于将Heroku中设置的环境迁移到Amazon Web Services堆栈(RDS PostgreSQL,Elastic Beanstalk) .

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

未处理的拒绝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]

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

2 回答

  • 4

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

    • 正确格式化URI - (按照上面的语法,我能够让它工作)

    • 为Amazon RDS和Elastic Beanstalk启用安全设置 - 我必须为运行Elastic Beanstalk的安全组/实例角色启用对Amazon RDS实例的入站访问 . (事实上,我能够通过我的本地计算机点击RDS . 默认情况下,似乎RDS设置了您正在使用的IP以便能够使用它......这是有意义的 . )

  • 0

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

    就像是:

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

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

相关问题