从 Node.js 连接到 SQL 数据库 (AWS RDS) 而没有 ETIMEDOUT 错误

Posted

技术标签:

【中文标题】从 Node.js 连接到 SQL 数据库 (AWS RDS) 而没有 ETIMEDOUT 错误【英文标题】:Connect to SQL database (AWS RDS) from Node.js without ETIMEDOUT error 【发布时间】:2021-07-03 19:48:38 【问题描述】:

尝试使用 javascript 连接到 SQL 数据库,但我不断收到此错误:

Database connection failed: Error: connect ETIMEDOUT
    at Connection._handleConnectTimeout (/Users/------/phpstormProjects/------/node_modules/mysql/lib/Connection.js:409:13)
    at Object.onceWrapper (events.js:421:28)
    at Socket.emit (events.js:315:20)
    at Socket._onTimeout (net.js:480:8)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7)

已搜索网络但找不到任何解决方案。我究竟做错了什么?这是我的代码:

var mysql = require('mysql');

var connection = mysql.createConnection(
    host     : "----.---------.-------.amazonaws.com",
    user     : "--------",
    password : "--------"
);

connection.connect(function(err) 

    connection.end();

    if (err) 
        console.error('Database connection failed: ' + err.stack);
        return;
    

    console.log('Connected to database.');
);

【问题讨论】:

它看起来与etimedout-error-when-querying-mysql-database 问题相似。在connect(function(err) /* here */ ) 中使用开关位置connection.end(); 进行测试 没有帮助...仍然是同样的错误 @jain 我把它移到正确的地方了吗? 基本可以,不过把connection.end()换成console.log('Connected to database.')下比较好。 connection.connect(function(err) if(err) console.log('err'); return; console.log('Connected to database.'); connection.end(); ); 是我想说的。 我在多个地方尝试了 connection.end() 并没有帮助 【参考方案1】:

这个是我自己发现的。我使用 phpstorm 作为 IDE 并尝试通过我的 app.js 文件连接到 sql。我还使用 aws ec2 实例连接到我之前已经建立连接的数据库。我使用 SSH 连接到我的 ec2 实例,然后在我的 /var/www/html 文件夹中创建了一个 app.js 并从那里毫无问题地连接。

【讨论】:

以上是关于从 Node.js 连接到 SQL 数据库 (AWS RDS) 而没有 ETIMEDOUT 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 Heroku 上的 Node.js 连接到 CloudSQL

在 vagrant 中将 Node.js 连接到 apache 服务器上的 postgres

我无法使用 Node.JS 服务器连接到 SQL 服务器

使用 Node.js 从 AWS Lambda 函数连接到 MySql 数据库,没有连接回调

无法从 Node.js 连接到 Telnet 服务器

Node.js - 连接到 MySQL 数据库服务器