简体   繁体   中英

Sequelize only connecting with localhost

I am integrating Sequelize with nodejs code and the following is my Sequelize configuration:

'use strict';

const Sequelize = require('sequelize');
const config = require('../config');

const sequelize = new Sequelize(config.mysql.database,
    config.mysql.username,
    config.mysql.password, {
        host: 'example.amazonaws.com',
        dialect: config.mysql.dialect,
        port: config.mysql.pool,
        pool: { max: config.mysql.pool.max, min: config.mysql.pool.min, acquire: 1000000, idle: 10000 }
    });
sequelize
    .authenticate()
    .then(() => {
        console.log('Connection has been established successfully.');
    })
    .catch(err => {
        debugger;
        console.error('Unable to connect to the database:', err);
    });

module.exports = sequelize

My config.js is looking like this:

module.exports = {
    postgres: {
        username: "root",
        password: "secret",
        database: "secret",
        host: "example.amazonaws.com",
        port: "5439",
        dialect: "pg",
        operatorsAliases: false,
        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000
        }
    },
    mysql: {
        username: "root",
        password: "secret",
        database: "secret",
        host: "example.amazonaws.com",
        port: "3306",
        dialect: "mysql",
        operatorsAliases: false,
        pool: {
            max: 20,
            min: 5,
            acquire: 30000,
            idle: 10000
        }
    }
}

But I am getting following error while connecting:-

< Unable to connect to the database: { SequelizeConnectionError: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61300)
<     at Promise.tap.then.catch.err (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:133:19)
<     at tryCatcher (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/util.js:16:23)
<     at Promise._settlePromiseFromHandler (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:517:31)
<     at Promise._settlePromise (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:574:18)
<     at Promise._settlePromise0 (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:619:10)
<     at Promise._settlePromises (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:695:18)
<     at _drainQueueStep (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:138:12)
<     at _drainQueue (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:131:9)
<     at Async._drainQueues (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:147:5)
<     at Immediate.Async.drainQueues [as _onImmediate] (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:17:14)
<     at runCallback (timers.js:705:18)
<     at tryOnImmediate (timers.js:676:5)
<     at processImmediate (timers.js:658:5)
<   name: 'SequelizeConnectionError',
<   parent:
<    { Error: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61300)
<        at internalConnect (net.js:872:16)
<        at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)
<        at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1019:9)
<        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
<      errno: 'EADDRNOTAVAIL',
<      code: 'EADDRNOTAVAIL',
<      syscall: 'connect',
<      address: '127.0.0.1',
<      fatal: true },
<   original:
<    { Error: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61300)
<        at internalConnect (net.js:872:16)
<        at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)
<        at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1019:9)
<        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
<      errno: 'EADDRNOTAVAIL',
<      code: 'EADDRNOTAVAIL',
<      syscall: 'connect',
<      address: '127.0.0.1',
<      fatal: true } }
< { SequelizeConnectionError: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61303)
<     at Promise.tap.then.catch.err (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:133:19)
<     at tryCatcher (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/util.js:16:23)
<     at Promise._settlePromiseFromHandler (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:517:31)
<     at Promise._settlePromise (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:574:18)
<     at Promise._settlePromise0 (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:619:10)
<     at Promise._settlePromises (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/promise.js:695:18)
<     at _drainQueueStep (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:138:12)
<     at _drainQueue (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:131:9)
<     at Async._drainQueues (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:147:5)
<     at Immediate.Async.drainQueues [as _onImmediate] (/Users/atul/Documents/Workspace/lamda/dealer-rating/node_modules/bluebird/js/release/async.js:17:14)
<     at runCallback (timers.js:705:18)
<     at tryOnImmediate (timers.js:676:5)
<     at processImmediate (timers.js:658:5)
<   name: 'SequelizeConnectionError',
<   parent:
<    { Error: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61303)
<        at internalConnect (net.js:872:16)
<        at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)
<        at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1019:9)
<        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
<      errno: 'EADDRNOTAVAIL',
<      code: 'EADDRNOTAVAIL',
<      syscall: 'connect',
<      address: '127.0.0.1',
<      fatal: true },
<   original:
<    { Error: connect EADDRNOTAVAIL 127.0.0.1 - Local (0.0.0.0:61303)
<        at internalConnect (net.js:872:16)
<        at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)
<        at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1019:9)
<        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
<      errno: 'EADDRNOTAVAIL',
<      code: 'EADDRNOTAVAIL',
<      syscall: 'connect',
<      address: '127.0.0.1',
<      fatal: true } }

I have checked everything but didn't find anything which is pointing to localhost. Even when I checked with configuration and that is also correct. But every time it is trying to localhost instead of rds.

I guess there is something wrong with mysql2 or the version of sequelize.

You can use URL string as well.

describe('Instantiation with a URL string', () => {
    it('should accept username, password, host, port, and database', () => {
      const sequelize = new Sequelize('mysql://user:pass@example.com:9821/dbname');
      const config = sequelize.config;
      const options = sequelize.options;

      expect(options.dialect).to.equal('mysql');

      expect(config.database).to.equal('dbname');
      expect(config.host).to.equal('example.com');
      expect(config.username).to.equal('user');
      expect(config.password).to.equal('pass');
      expect(config.port).to.equal('9821');
  });
});

for further configuration, details check unit test of sequelize.

configuration unit tests

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM