如何在节点js和mysql中检查数据库连接是否成功

时间:2017-09-22 14:28:15

标签: javascript mysql node.js node-mysql connection-pool

我正在使用mysql连接池来创建连接。代码如下所示。

var pool = mysql.createPool(connectionProps);

通过访问池,即使连接不成功,我也会得到一个Object。我通过启动和停止mysql来检查它。

我想要的是,我需要检查连接是否成功如下。

if(pool){ // mysql is started && connected successfully.
   console.log('Connection Success');
   doSomething();
}else{
   console.log('Cant connect to db, Check ur db connection');
}

我想要这样的东西。那么我们怎样才能用mysql池对象做到这一点。有人可以帮助我吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

通常你会做一些事情,比如从db中选择任意一些东西,如果失败就会发现错误。 docs

中的示例
const pool = mysql.createPool(connectionProps);
pool.query('SELECT 1 + 1 AS solution', (error, results, fields) => {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

答案 1 :(得分:0)

var pool = mysql.createPool(config.db);
exports.connection = {
query: function () {
    var queryArgs = Array.prototype.slice.call(arguments),
        events = [],
        eventNameIndex = {};

    pool.getConnection(function (err, conn) {
        if (err) {
            if (eventNameIndex.error) {
                eventNameIndex.error();
            }
        }
        if (conn) { 
            var q = conn.query.apply(conn, queryArgs);
            q.on('end', function () {
                conn.release();
            });

            events.forEach(function (args) {
                q.on.apply(q, args);
            });
        }
    });

    return {
        on: function (eventName, callback) {
            events.push(Array.prototype.slice.call(arguments));
            eventNameIndex[eventName] = callback;
            return this;
        }
    };
}
};

并要求使用它:

db.connection.query("SELECT * FROM `table` WHERE `id` = ? ", row_id)
      .on('result', function (row) {
        setData(row);
      })
      .on('error', function (err) {
        callback({error: true, err: err});
      });