NodeJS连接MySQL出现Cannot enqueue Handshake after invoking quit.
原因在于node连接上mysql后如果因网络原因丢失连接或者用户手工关闭连接后,原有的连接挂掉,需要重新连接;如下代码,每次访问结束都关闭,每次开始访问前重连接下,代码中没有监听连接的fatal错误
之前的代码
app.get('/register/success',function(req,res){
var obj=req.query
//console.log(obj)//成功
connection.connect();
var p1=new Promise(function(resolve,reject){
connection.query('SELECT * FROM login',function(error,results,field){
if(error){reject(error)}
resolve(results)
})
connection.end()
})
p1.then(function(results){
console.log(obj)
connection.connect();
connection.query('INSERT INTO login SET ?',{
name:obj.yonghu,
secret:obj.secret
},function(error,result,field){
if(error){
console.log(error)
throw error
}
console.log('插入成功',result)
})
connection.end()
},function(error){
console.log('文件读取失败',error)
})
})
app.get('/register/success',function(req,res){
var obj=req.query
//console.log(obj)//成功
connection.connect();
var p1=new Promise(function(resolve,reject){
connection.query('SELECT * FROM login',function(error,results,field){
if(error){reject(error)}
resolve(results)
})
connection.end()
})
p1.then(function(results){
console.log(obj)
//后来重新定义了连接才可以
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'denglu',
});
connection.connect();
connection.query('INSERT INTO login SET ?',{
name:obj.yonghu,
secret:obj.secret
},function(error,result,field){
if(error){
console.log(error)
throw error
}
console.log('插入成功',result)
})
connection.end()
},function(error){
console.log('文件读取失败',error)
})
})