i将mysql连接到nodejs。一段时间后,您将获得错误:
'连接丢失服务器关闭了连接'。
我需要您的帮助。
发生了错误,我们添加了函数handleDisconnect
。但是,一旦解决了断开连接,第二个错误再次发生在Connection lost the server closed the connection
中。
我想知道为什么它应该只有一次,而不是第二个。
ps:使用翻译器可能不会平滑描述。
这是app.js
文件的一部分
// connection to databases
var mysql_dbc = require('./config/db_con')();
var connection = mysql_dbc.init();
mysql_dbc.test_open(connection);
// Added Code
handleDisconnect(connection);
function handleDisconnect(client) {
client.on('error', function (error) {
if (!error.fatal) return;
if (error.code !== 'PROTOCOL_CONNECTION_LOST') throw err;
console.error('> Re-connecting lost MySQL connection: ' + error.stack);
mysql_dbc.test_open(connection);
});
};
您可以尝试使用此代码来处理服务器断开:
var mysql = require("mysql");
var configuration = {
host: "localhost",
user: "root",
password: "mysql",
database: "blog"
};
var connection;
function handleDisconnect() {
connection = mysql.createConnection(configuration);
connection.connect(function(err) {
if (err) {
console.log("error when connecting to db:", err);
setTimeout(handleDisconnect, 2000);
}else{
console.log("connection is successfull");
}
});
connection.on("error", function(err) {
console.log("db error", err);
if (err.code === "PROTOCOL_CONNECTION_LOST") {
handleDisconnect();
} else {
throw err;
}
});
}
handleDisconnect();
由于网络问题,您可能会失去与MySQL服务器的连接, 服务器将您计时,服务器正在重新启动或崩溃。 所有这些事件都被认为是致命的错误。
重新连接连接是通过建立新连接完成的。一旦终止,现有的连接对象就无法通过设计重新连接。
使用池,将从池中删除断开连接的连接,以释放空间,以在下一个getConnection呼叫上创建新连接。