Javascript 查询mysql数据库时出现ETIMEDOUT错误
我使用sequel pro创建了一个名为Javascript 查询mysql数据库时出现ETIMEDOUT错误,javascript,mysql,node.js,Javascript,Mysql,Node.js,我使用sequel pro创建了一个名为test的数据库。它有一个名为users的表。在该表中有一个用户->id=1,name=Phantom 当我运行下面的代码时,我得到的解决方案是:未定义 有人能告诉我如何连接到数据库并向用户展示吗 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost:8889', user : 'root',
test
的数据库。它有一个名为users
的表。在该表中有一个用户->id=1,name=Phantom
当我运行下面的代码时,我得到的解决方案是:未定义
有人能告诉我如何连接到数据库并向用户展示吗
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
连接时。_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
节点是异步的,所以
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();
});
如果它在配置了防火墙的VPS上,您需要通过SSH将您的IP列入白名单。否则,即使在通过cPanel的RemoteMYSQl添加之后,它仍然会抛出上述错误
# csf -a [RemoteIP]
# csf -r
您也可以通过WHM快速完成。刚刚发布,因为它可能会帮助某人。检查回调中的
err
参数,查看出了什么问题。根据您的代码,我猜,在实际查询完成之前,连接已关闭。@Sirko更新了问题您是否验证了您的数据库是否正在实际运行(在该端口上)?如果您的数据库在端口8889上运行,则应将其作为附加参数传递给连接。默认的mysql端口是3306,你的应用现在找不到任何服务器。另一种方法是,您可以直接传递套接字,如下所示:Let us.抱歉,更新了问题。想一想新的信息可能会让人感觉更深刻,这会改变一切:)尝试将端口号添加到createConnection
cool,但是关于connection.end
的观点仍然有效。如果您满意,请接受答案,或者如果需要,我可以澄清