有没有办法解决node.js中的mysql重新连接问题?



您好,如果由于长时间不使用连接而未打开/断开连接,那么当我尝试重新连接时,它会给我一个错误。我已经查找了此错误,但响应似乎对我的情况没有帮助。下面是错误:在已经排队握手后无法排队握手。以下是导致此问题的代码:

var con = mysql.createConnection({
host: "",
user: "",
password: "",
database: ""
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
con.on('error', function(err) {
console.log(err);
console.log('MYSQL Disconnected');
})
if (con.state == 'disconnected') {
con.connect(function(err) {
if (err) throw err;
});
}

下面有更多代码,但由于它检查身份验证状态和查询而无关紧要

我发现mysql.createConnectionmysql.createPool之间的区别是,当前者失去与MySQL的连接(超时(时,我需要重新启动节点服务器以重新建立连接。使用创建池,该应用程序仅在需要时使用 mysql 连接,并且当 MySQL 超时时,我不需要重新启动节点。

试试这个,看看是否有任何好处:

dbConnectionInfo = {
host: "",
user: "",
password: "",
database: ""
};
var con = mysql.createPool(
dbConnectionInfo
);
con.on('connection', function (connection) {
console.log('DB Connection established');
connection.on('error', function (err) {
console.error(new Date(), 'MySQL error', err.code);
});
connection.on('close', function (err) {
console.error(new Date(), 'MySQL close', err);
});
});

这种方法我从帖子中找到,但我不记得是哪一个,因为我见过很多mysl.createPool。您可以在此处找到更多方法