7

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!

4

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..)
2
  • i am still battling with this. Getting the connection timeout error. Can you elaborate more on your solution pls ? Jun 27, 2016 at 12:46
  • Hi Nuru, were you able to connect to your database locally through curl or a tool like pgAdmin? If so, afterwards you will want to make sure you check the security group between your RDS and Elastic Beanstalk instance and make sure that the "Inbound" settings are configured correctly.
    – James
    Jul 1, 2016 at 6:12
1

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.

1
  • Ran into the same problem. Changing the password resolved the issue.
    – Avraham
    Mar 23, 2020 at 14:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.