1
我正在使用节点JS,我试图连接到一个MySQL数据库。它由于超时而保持断开连接,所以我写了一个函数来重新连接,如果它超时。虽然我需要它是一个连续的连接,否则我的代码中的引用将无法工作。这里是我的相关代码:节点JS mysql数据库断开连接
var mysql = require('mysql');
var connection = mysql.createConnection({
host : '.........', // MySQL Host
user : '.........', // MySQL User
password : '.........', // MySQL Password
database : '.........' // MySQL Databse
});
// MYSQL INFO
//connection.connect();
function replaceClientOnDisconnect(connection) {
connection.on("error", function (err) {
if (!err.fatal) {
console.log('Databse Error, error not fatal');
return;
}
if (err.code !== "PROTOCOL_CONNECTION_LOST") {
throw err;
console.log('PROTOCOL_CONNECTION_LOST Error: Reconnecting to database...');
}
setTimeout(function() {
connection.destroy();
connection = mysql.createConnection(connection.config);
replaceClientOnDisconnect(connection);
connection.connect(function (error) {
if (error) {
process.exit(1);
} else {
console.log('Reconnected to database!');
}
}, 1000); // 1 sec
});
});
}
// And run this on every connection as soon as it is created.
replaceClientOnDisconnect(connection);