我运行一个用NodeJS / EXPRESS编写的Web服务器来处理MySQL数据库。 为了提高效率,我使用了node-mysql的池化机制。
我仍然会遇到一些问题: - 连接丢失 - 无法释放已释放的连接 - 没有发布未定义的
根据请求,可以使用各种代码模式来获取数据并释放连接:
1 /标准回调......,function(err, rows){...}
- 我可能理解,释放应该在回调之前完成?请确认我!
- 我甚至可以在回拨函数的第一行使用该版本吗? (因为在各种回调的情况下我可能有很多案例。
.on('error')
和.on('end')
两个事件中都放了一个connection.release。够了吗 ?
- 如果在第10行调用错误会发生什么。这两个事件都会被调用吗?我想不是,但我遇到了一些问题(可以,不能发布已经发布的连接),代码如下:
pool.getConnection(function(err, mysqlConnection) {
if (err != null) {
console.log(err);
}
else {
mysqlConnection.query('USE table');
var xs = new Array();
if (selectedB === 'B') {
if (selectedC === 'C') {
var queryCmd = "SELECT DISTINCT nom FROM x WHERE a ='" + selectedA + "'";
var query = mysqlConnection.query(queryCmd);
query
// ERROR
.on('error', function(err) {
mysqlConnection.release();
})
// RESULT
.on('result', function(row) {
mysqlConnection.pause();
var x = row['nom'];
xs.push(x);
mysqlConnection.resume();
})
// END
.on('end', function() {
mysqlConnection.release();
callback(xs);
})
}
else {
mysqlConnection.release();
callback([]);
}
}
else {
mysqlConnection.release();
callback([]);
}
}
});
3 /返回
- 返回前致电释放!
然后,有一些关于标准连接的错误处理的片段,我们应该怎么做连接池?因为以防万一,它会使服务器崩溃!
先谢谢你的建议。这肯定会对我有很大的帮助!