【问题标题】:Error handling and lost connection in node.js mysql using pool使用池的node.js mysql中的错误处理和丢失连接
【发布时间】:2018-10-18 19:52:30
【问题描述】:

我正在使用 node.js npm 模块 mysql 来连接 MySQL 数据库。

我看到有可能使用:

  • pool.getConnection()、connection.query() 和 connection.release()
  • 或 pool.query

关于第二种情况,我有两个问题。

1) 在使用 pool.query 时出现错误、丢失连接是否有任何自动重新连接? (使用池时是否需要“处理断开连接”功能?

2) 使用第一种方法,我可以设置 connection.on('error', function(){...})。在第二种情况下如何做到这一点? (pool.on('error'...) ?)

【问题讨论】:

    标签: node.js connection-pooling node-mysql


    【解决方案1】:

    1)如果我错了,请纠正我,但我认为在使用池查询时没有一种在断开连接时自动连接的方法。这是一个很好的代码设计,可以让我们知道错误,并让我们决定在断开连接时做什么。

    2) 我们可以使用pool.getConnection((err, con) => {})

    这是我在运行查询之前用来检查连接的代码。希望对您有所帮助。

    connect: function ()
        {
            return new Promise((resolve, reject) => {
                let pool = Mysql.createPool({
                    connectionLimit: config.mysql.connectionLimit,
                    host: config.mysql.host,
                    user: config.mysql.user,
                    password: config.mysql.password,
                    database: config.mysql.database
                });
    
                pool.getConnection((err, con) =>
                {
                    try
                    {
                        if (con)
                        {
                            con.release();
                            resolve({"status":"success", "data":"MySQL connected.", "con":pool});
                        }
                    }
                    catch (err)
                    {
                        reject({"status":"failed", "error":`MySQL error. ${err}`});
                    }
                    resolve({"status":"failed", "error":"Error connecting to MySQL."});
                });
            });
        }
    

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2019-12-31
      • 2019-10-28
      • 2018-02-25
      • 2020-02-07
      • 1970-01-01
      • 2015-01-14
      • 2010-09-22
      • 1970-01-01
      相关资源
      最近更新 更多