代码如下:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
port :"3306",
database :"mydb",
user : 'root',
password : '007007',
});
var isCon = true;
connection.connect(
function (err) {
console.log(isCon);
if (err) {
isCon=false;
console.error("error connecting :"+err);
return;
};
}
);
if(isCon){
connection.query('select * from tb_items', function(err, result) {
if (err) throw err;
console.log('The solution is: ', result);
console.log('The typeof solution is ',typeof(result));
debugger;
});
connection.end();
}
connection.connect(
function (err) {
console.log(isCon);
if (err) {
isCon=false;
console.error("error connecting :"+err);
return;
};
}
);
if(isCon){
connection.query('select * from tb_items', function(err, result) {
if (err) throw err;
console.log('The solution is: ', result);
console.log('The typeof solution is ',typeof(result));
debugger;
});
connection.end();
}
我只是打开() - > connect() - > query() - > end(),然后再次执行,但第二次,出现错误:错误:无法排队握手在调用quiting之后。 问题:也许我不能在结束后重新打开它。但是我只是想知道,如果我结束(),我怎么能重新打开它?
答案 0 :(得分:0)
此外,您无需关闭每个查询的连接 - 只需继续重复使用它,而无需调用.end()
如果您想要多个连接并自动处理死连接,则应使用Pool类。
还有一点需要注意:您的isCon
检查不正确,connection.query
在connect()
回调之前被调用,所以它始终为真。只检查query
回调本身的错误是安全的。如果连接不成功,则会将错误传播到排队的命令