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

5 javascript mysql node.js

使用 sequel pro 我创建了一个名为test. 它有一张名为users. 在该表中有一个用户 -> id=1, name=Phantom

我已经安装了mysql节点模块

当我运行下面的代码时,我得到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();
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

错误:在 Connection._handleConnectTimeout 连接 ETIMEDOUT (/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
Run Code Online (Sandbox Code Playgroud)

xSh*_*ase 6

Node 是异步的,因此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();
});
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,如果您曾经使用连接池,关闭池中连接的正确方法是使用connection.release()(不推荐使用connection.end()!) (2认同)