【问题标题】:NodeJS MySQL - How to know connection is release or notNodeJS MySQL - 如何知道连接是否释放
【发布时间】:2016-04-05 05:13:28
【问题描述】:

我正在开发 NodeJS + MySQL Web API。

我正在使用mysql npm 模块。

我想知道连接是否释放,是否有任何函数或变量。 喜欢

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

是否有任何特定功能可以知道连接是否释放?

我收到“连接已释放”之类的错误

【问题讨论】:

    标签: mysql node.js database-connection


    【解决方案1】:

    万一您无法访问游泳池,您也可以这样做:

    connection._pool._freeConnections.indexOf(connection)
    

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

    【讨论】:

    • 如果我们无论如何都要使用“私有”变量,那么这个答案似乎比公认的要简单得多。
    • 是的,occam 的剃须刀更喜欢这个。 (做同样的事情,但更简单)
    【解决方案2】:

    您可以检查连接是否在池中以查看它是否被释放。如果未释放连接,则空闲连接中的索引将为 -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
    
       });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多