查询mysql数据库时出现ETIMEDOUT错误

时间:2016-11-29 14:41:43

标签: javascript mysql node.js

使用续集专业版我创建了一个名为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

2 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分:1)

如果在配置了防火墙的 VPS 上,您需要通过 SSH 将您的 IP 列入白名单。否则,即使通过 cPanel 的 RemoteMYSQl 添加后,它仍然会抛出完全高于错误

# csf -a [RemoteIP]
# csf -r 

您也可以通过 WHM 快速完成。刚刚发布,因为它可能对某人有所帮助。