【发布时间】:2016-08-18 03:05:44
【问题描述】:
我真的很难解决这个问题。当我尝试将节点连接到 aws 的 rds mysql 数据库时,我收到此错误:
{ [Error: Handshake inactivity timeout]
code: 'PROTOCOL_SEQUENCE_TIMEOUT',
fatal: true,
timeout: 10000 }
在线解决方案建议更新到节点 v4.2.1,但我使用的是 v5.10.1。 当我将节点连接到我的本地主机 mysql 时,我没有任何问题。
这是我的代码:
connectionpool = mysql.createPool({
host : 'dev-db.xxxxxx.us-west-2.rds.amazonaws.com',
user : 'xxxxx',
password : 'xxxxx',
database : 'decurate',
});
app.get('/:table', function(req,res){
connectionpool.getConnection(function(err, connection) {
if (err) {
console.error('CONNECTION error: ',err);
res.statusCode = 503;
res.send({
result: 'error',
err: err.code
});
} else {
connection.query('SELECT * FROM user ORDER BY user_id DESC LIMIT 20', req.params.id, function(err, rows, fields) {
if (err) {
console.error(err);
res.statusCode = 500;
res.send({
result: 'error',
err: err.code
});
}
res.send({
result: 'success',
err: '',
json: rows
});
connection.release();
});
}
});
});
请指教。
谢谢!
【问题讨论】:
-
您是否尝试使用 mysql 命令行客户端从节点机器连接到服务器...或使用
nc甚至telnet-- 验证简单网络连接的东西? -
是的,如果我通过 SSH 或 MSQL 工作台连接到 mysql 服务器,它工作正常。 `只是不能在节点中工作。
-
好的,但是来自运行节点的机器 命令
nc dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306是否返回预期的垃圾字符串,例如N 5.6.19-logxxxwRrf,FZpxxxHUQx)a-[ca?Rmysql_native_password?还是telnet dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306甚至cat < /dev/tcp/dev-db.xxxxxx.us-west-2.rds.amazonaws.com/3306?任何这些东西都可以用来测试连接性。 -
我尝试了
nc dev-db.xxxxxx.us-west-2.rds.amazonaws.com 3306命令,这是我收到nc: connect to dev-db.xxxxxxxx.us-west-2.rds.amazonaws.com port 3306 (tcp) failed: Connection timed out的响应 -
天啊!!经过几天的头痛,我想通了。我让我的 aws ec2 实例安全组从我的 ip 而不是 ec2 ip 接收流量。赞美主!!非常感谢您的帮助@Michael-sqlbot
标签: mysql node.js amazon-web-services rds