【问题标题】: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."});
});
});
}