nodejs mysql Error: Connection lost The server closed the connection
第一个程序BUG尽然是酱紫就发生鸟...www
网上看了很多写的不是很明了故.....
解决问题如下:
直接上代码 线上目前还没有发现超时哦。。。
// conf/db.js
// MySQL数据库联接配置
var mysql_config = {
host: '127.0.0.1',
user: 'xxxx',
password: 'xxxxx',
database:'xchat', //数据库
port: 3309
};
//单个连接的多语句查询配置
var mysql_config_multi = {
host: mysql_config.host,
user: mysql_config.user,
password: mysql_config.password,
database:mysql_config.database, //数据库
port: mysql_config.port,
multipleStatements:true
};
// 实现与MySQL交互
var mysql = require('mysql');
// 使用连接池,提升性能
var poolConn = mysql.createPool(mysql_config);
//连接池查询
var querypoll = function(sql,params,callback){
poolConn.getConnection(function(err,conn){
if(err){
callback(err,null,null);
}else{
var query = conn.query(sql,params,function(qerr,vals,fields){
//释放连接
conn.release();
//事件驱动回调
callback(qerr,vals,fields);
});
console.log("sql:::"+query.sql);
}
});
};
//不使用连接池
var query = function (sql,params,callback) {
var conn = mysql.createConnection(mysql_config_multi);
//连接错误,2秒重试
conn.connect(function (err) {
if (err) {
console.log("error when connecting to db:", err);
setTimeout(query , 2000);
}else{
var query = conn.query(sql,params,function(qerr,vals,fields){
//关闭连接
conn.end();
//事件驱动回调
callback(qerr,vals,fields);
});
console.log("sql:::"+query.sql);
}
});
conn.on("error",function (err) {
console.log("db error", err);
// 如果是连接断开,自动重新连接
if (err.code === "PROTOCOL_CONNECTION_LOST") {
query();
} else {
throw err;
}
});
}
module.exports = {
querypoll:querypoll,
query:query
};
写的不好请大神指点啊哈哈哈哈哈哈