据我所知,由于非阻塞I / O理论,一切都应该在回调中。
所以我很困惑,例如felixge/node-mysql
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
但我认为这是错误的例子,因为.end()可能在连接建立之前发生。
有些人可以给我正确的例子来连接,查询和结束mysql连接。
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
// As I understand every "query" should happen here
});
答案 0 :(得分:4)
mysql
模块内部有一个查询队列,在连接时处理。调用.end()
后,只有在队列为空时才会结束连接。
此外,.connect()
是不必要的,因为在断开连接时调用.query()
会隐式触发连接。
答案 1 :(得分:2)
在您引用的代码的正下方:
使用end()关闭连接,确保在将退出数据包发送到mysql服务器之前执行所有剩余的查询。