【问题标题】:Node js mysql query gives error when executed second timeNode js mysql查询第二次执行时出错
【发布时间】:2016-12-30 15:33:00
【问题描述】:

我正在尝试使用 express 在节点中创建一个 REST api。当我第一次在浏览器中打开 url 时,它运行良好并给了我正确的输出。但是当我第二次点击 api url 时,应用程序崩溃并出现错误:

events.js:141 投掷者; // 未处理的“错误”事件 ^

错误:调用退出后无法排队握手。

这是我正在使用的代码:

var express = require('express');
var mysql = require('mysql');

var app = express();
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'USER_NAME',
  password: 'PASSWORD'
});

app.use(express.static(__dirname + '/public'));
var port = 3333;

app.get('/api/users/:user_id', function(req, res){
    var lead_id = req.params.user_id;

    connection.connect();

    connection.query('use DB_NAME;', function (err) {
        if(err) throw err;

        connection.query('select * from users where user_id = ' + user_id, function (err, rows) {
            if(err) throw err;

            res.json(rows);
            connection.end();
        });
    });
});

app.listen(port);
console.log("The app is running on port " + port);

谁能告诉我我做错了什么?

【问题讨论】:

  • 考虑使用池而不是单个连接。当你想要一个连接时使用 pool.getConnection() 并且当你完成它时使用 connection.release();

标签: javascript mysql node.js express node-mysql


【解决方案1】:

只需删除 connection.connect()connection.end()。然后它应该工作。

connection.connect() 应该调用一次或不调用。因为connection.query 会连接,所以我不会连接。

PS - 连接丢失时需要调用connection.connect()

【讨论】:

    【解决方案2】:

    尝试this 删除冗余连接。这是 google 搜索错误消息的第一个结果 - 在询问 SO 之前,请始终尝试 google 错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多