James
James

Reputation: 181

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

I'm currently working on migrating an environment set up in Heroku over to the Amazon Web Services stack (RDS PostgreSQL, Elastic Beanstalk).

I'm facing some issues when trying to connect to PostgreSQL through the sequelize.js ORM. Error message below:

Unhandled rejection SequelizeHostNotFoundError: getaddrinfo ENOTFOUND [host].

I can connect to the database through pgAdmin so I know the service is working, and the following configuration has worked on Heroku:

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

DATABASE_URI is formatted in the following way:

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

Any help would be greatly appreciated. Thanks in advance!

Upvotes: 7

Views: 4068

Answers (2)

jawj
jawj

Reputation: 473

I had a very similar problem, and it turned out I had a question mark in my password — causing half the password and the remainder of the connection URL to be ignored (as apparently part of the URL search portion).

Something like:

new Sequelize("postgres://fred:[email protected]/db");

Where we end up with username: fred, password: xj78, and everything else blank.

Escaping the question mark as %3F fixes the issue.

Upvotes: 1

James
James

Reputation: 181

I was able to solve my issues here. Essentially, I solved it by setting up the following correctly within the environment.:

  1. Formatting URI correctly - (Following the syntax above, I was able to get it to work)
  2. Enabling security provisions for Amazon RDS & Elastic Beanstalk - I had to enable Inbound access to the Amazon RDS instance for the Security group / Instance Role that the Elastic Beanstalk was running under. (I got caught up in the fact that I was able to hit RDS through my local computer. By default, it seems RDS sets up the IP that you are using to be able to use it... which makes sense..)

Upvotes: 4

Related Questions