查询mysql数据库时出现ETIMEDOUT错误
Posted
技术标签:
【中文标题】查询mysql数据库时出现ETIMEDOUT错误【英文标题】:ETIMEDOUT error when querying mysql database 【发布时间】:2017-04-13 14:42:18 【问题描述】:使用 sequel pro 我创建了一个名为 test
的数据库。它有一张名为users
的表。在该表中有一个用户 -> id=1, name=Phantom
。
I have installed the mysql
node module
当我运行下面的代码时,我得到The solution is: undefined
。
谁能告诉我如何连接到数据库并向用户展示?
var mysql = require('mysql');
var connection = mysql.createConnection(
host : 'localhost:8889',
user : 'root',
password : 'root',
database : 'test'
);
connection.connect();
connection.query('SELECT * from users', function(err, rows, fields)
if (err) throw err;
console.log('The solution is: ', rows);
);
connection.end();
它显示以下错误:
错误:连接 ETIMEDOUT 在 Connection._handleConnectTimeout (/Users/fitz035/Desktop/sony/presave/node_modules/mysql/lib/Connection.js:425:13)
我正在通过 MAMP 运行数据库。这些是数据库设置:
Host: localhost
Port: 8889
User: root
Password: root
Socket: /Applications/MAMP/tmp/mysql/mysql.sock
【问题讨论】:
检查回调中的err
参数,看看哪里出了问题。从您的代码中我猜,在实际查询通过之前,连接已关闭。
@Sirko 更新了问题
您是否验证过,您的数据库实际上正在运行(在该端口上)?
如果您的数据库在端口 8889 上运行,您应该将其作为附加参数传递给连接。默认的 mysql 端口是 3306,您的应用程序现在找不到任何服务器。作为替代方案,您可以直接传递套接字,如下所示:***.com/a/26465986/1169798
让我们continue this discussion in chat.
【参考方案1】:
如果它在配置有防火墙的 VPS 上,您需要通过 SSH 将您的 IP 列入白名单。否则,即使在通过 cPanel 的 RemoteMYSQl 添加后,它仍然会抛出完全高于错误的错误
# csf -a [RemoteIP]
# csf -r
您也可以通过 WHM 快速完成。刚刚发布,因为它可能对某人有帮助。
【讨论】:
【参考方案2】:节点是异步的,所以connection.end()
很可能在您的查询回调之前发生。另外,非标准时指定Mysql运行的端口。
试试这个:
var mysql = require('mysql');
var connection = mysql.createConnection(
host : 'localhost',
user : 'root',
password : 'root',
database : 'test',
port: 8889
);
connection.connect();
connection.query('SELECT * from users', function(err, rows, fields)
if(err) console.log(err);
console.log('The solution is: ', rows);
connection.end();
);
【讨论】:
抱歉,更新了问题。认为新信息可能更有意义 确实,这会改变一切 :) 尝试将端口号添加到createConnection
酷,关于connection.end
的观点仍然有效。如果您对它感到满意,请接受答案,或者如果需要我可以澄清
如果您曾经使用过连接池,请注意,关闭池中连接的正确方法是使用 connection.release()(不推荐使用 connection.end()!)
以上是关于查询mysql数据库时出现ETIMEDOUT错误的主要内容,如果未能解决你的问题,请参考以下文章
写入 MySQL 时查询 sqlite_master 表时出现 to_sql() 错误
MySQL Cluster ERROR 失败,查询时出现错误'Got error 240'Unknown error code' from NDBCLUSTER'