使用池的node.js mysql中的错误处理和丢失连接

Posted

技术标签:

【中文标题】使用池的node.js mysql中的错误处理和丢失连接【英文标题】:Error handling and lost connection in node.js mysql using pool 【发布时间】: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'...) ?)

【问题讨论】:

【参考方案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.");
            );
        );
    

【讨论】:

以上是关于使用池的node.js mysql中的错误处理和丢失连接的主要内容,如果未能解决你的问题,请参考以下文章

深入解析Node.js使用MySQL连接池

Node.js权威指南 (10) - Node.js中的错误处理与断言处理

Node.js 的 MySQL 库中的错误

重现 MySQL 错误:服务器关闭连接(node.js)

错误:Node.js MYSQL 模块中的握手不活动超时

在 Node.js 中处理回滚的 MySQL 事务