NodeJS MySQL - 如何知道连接是否发布

时间:2015-12-31 07:36:23

标签: mysql node.js database-connection

我正在开发NodeJS + MySQL Web API。

我正在使用mysql npm模块。

我想知道连接是否发布是否有任何功能或变量。 像

if(!connection.isRelease() OR !connection.isClose() OR !connection.end()) {
    connection.release();
}

是否有任何特定的功能可以知道连接是否已发布?

我收到类似“连接已发布”的错误

3 个答案:

答案 0 :(得分:14)

您可以检查连接是否在池中以查看它是否已被释放。如果未释放连接,则空闲连接中的索引将为-1。这是一个例子。

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'localhost',
  user            : 'root',
  password        : ''
});

pool.getConnection(function(err, connection) {
    connection.query( 'SELECT something FROM sometable', function(err, rows) {

      console.log(pool._freeConnections.indexOf(connection)); // -1

      connection.release();

      console.log(pool._freeConnections.indexOf(connection)); // 0

   });
});

答案 1 :(得分:1)

即使您无权访问游泳池,也可以这样做:

connection._pool._freeConnections.indexOf(connection)

这将为您提供与已接受答案相同的答案。

答案 2 :(得分:0)

在执行任何操作之前,您还可以在每个微服务中使用以下代码。

if(connection.state === 'disconnected'){
    return respond(null, { status: 'fail', message: 'server down'});
}