我有NODE.JS
应用程序,可与远程MySQL
数据库一起使用。在我的本地计算机(Windows 10)中,应用程序已成功连接到远程MySQL
数据库。我将sequelize库用于此任务。 MySQL数据库为每个用户提供40个最大连接池。当我在Docker
服务器中的CentOS
中运行此应用程序时,我注意到错误。尝试连接到Docker容器中的远程MySQL数据库时,应用程序引发错误。您认为此问题的原因可能是什么?我该如何解决这个问题?
错误:
Unable to connect to remote MySQL database: { SequelizeConnectionError: connect ETIMEDOUT
at Utils.Promise.tap.then.catch.err (/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:149:19)
at tryCatcher (/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/node_modules/bluebird/js/release/promise.js:690:18)
at _drainQueueStep (/node_modules/bluebird/js/release/async.js:138:12)
at _drainQueue (/node_modules/bluebird/js/release/async.js:131:9)
at Async._drainQueues (/node_modules/bluebird/js/release/async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate (timers.js:632:19)
name: 'SequelizeConnectionError',
parent:
{ Error: connect ETIMEDOUT
at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
at listOnTimeout (timers.js:324:15)
at processTimers (timers.js:268:5)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true },
original:
{ Error: connect ETIMEDOUT
at Connection._handleTimeoutError (/node_modules/mysql2/lib/connection.js:173:17)
at listOnTimeout (timers.js:324:15)
at processTimers (timers.js:268:5)
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true } }
JS :
const Sequelize = require('sequelize');
// "max_user_connections" resource for "db_user" user is "40".
const sequelize = new Sequelize('db_name', 'db_user', 'db_password', {
host: 'HOST',
port: '3306',
dialect: 'mysql',
pool: {
max: 15,
min: 5,
idle: 20000,
evict: 15000,
acquire: 30000
}
});
sequelize.authenticate().then(() => {
console.log('Connection to remote MySQL database has been established successfully.');
}).catch(err => {
console.error('Unable to connect to remote MySQL database:', err);
});
module.exports = sequelize;
依赖项:
"sequelize": "^4.42.0",
"mysql2": "^1.6.4"