我正在尝试重现我在EC2上的node mysql library上的node.js应用程序中看到的MySQL错误
连接丢失:服务器已关闭连接。
我不能在本地重现这个错误-我的代码可以很好地处理杀死数据库-它只是每隔几秒钟重新检查一次,并在重新启动后重新连接到数据库。在EC2上,它发生在太平洋时间凌晨4点左右,但数据库仍然正常运行。
我想
以下是我的node.js应用程序中的错误:
2012-10-22T08:45:40.518Z -错误: uncaughtException date=Mon Oct 22 2012 08:45:40 GMT+0000 (UTC),pid=14184,uid=0,gid=0,cwd=/home/ec2-GMT+0000/my-app,execPath=/usr/bin/nodejs,version=v0.6.18,argv=/usr/local/bin/node,/home/ec2-user/my-app/app.js,--my-app,rss=15310848,heapTotal=6311392,heapUsed=5123292,loadavg=0.0029296875,0.0146484375,0.04541015625,uptime=3238343.511107486,trace=column=13,file=/home/ec2-user/my-app/node_modules/mysql/lib/protocol/Protocol.js,function=Protocol.end,line=63,method=end,native=false,column=10,file=stream.js,function=Socket.onend,line=80,method=onend,native=false,column=20,file=events.js,function=Socket.emit,line=88,method=emit,native=false,column=51,file=net.js,:连接丢失:服务器关闭了连接。,
在Protocol.end (/home/ec2-user/my-app/node_modules/mysql/lib/protocol/Protocol.js:63:13),at Socket.onend (stream.js:80:10),at Socket.emit (events.js:88:20),at TCP.onread (net.js:388:51)
下面是我的代码(mysql帮助模块):
module.exports = function (conf,logger) {
var mysql = require('mysql');
var connectionState = false;
var connection = mysql.createConnection({
host: conf.db.hostname,
user: conf.db.user,
password: conf.db.pass,
database: conf.db.schema,
insecureAuth: true
});
function attemptConnection(connection) {
if(!connectionState){
connection = mysql.createConnection(connection.config);
connection.connect(function (err) {
// connected! (unless `err` is set)
if (err) {
logger.error('mysql db unable to connect: ' + err);
connectionState = false;
} else {
logger.info('mysql connect!');
connectionState = true;
}
});
connection.on('close', function (err) {
logger.error('mysqldb conn close');
connectionState = false;
});
connection.on('error', function (err) {
logger.error('mysqldb error: ' + err);
connectionState = false;
/*
if (!err.fatal) {
return;
}
if (err.code !== 'PROTOCOL_CONNECTION_LOST') {
throw err;
}
*/
});
}
}
attemptConnection(connection);
var dbConnChecker = setInterval(function(){
if(!connectionState){
logger.info('not connected, attempting reconnect');
attemptConnection(connection);
}
}, conf.db.checkInterval);
return connection;
};
https://stackoverflow.com/questions/13018227
复制相似问题