Nodejs?连接?mysql时报Error:?Cannot?enqueue?Query?after?fatal?error错误的处理办法(nodejs怎么连接mysql)没想到
文章摘要
这篇文章介绍了如何在Node.js中使用`mysql`模块实现数据库连接的重连机制。文中通过定义`dbconfig`对象配置了数据库连接参数,包括主机、用户名、密码、数据库名和调试标志。接着,通过`handleDisconnection`函数实现了在断开连接后2秒内自动重连的功能,并在协议连接丢失时再次重连。文章还详细描述了处理连接错误的方式,确保在遇到问题时能够自动重试。最终,该函数返回处理后的数据库连接,以`exports.db`的形式暴露出来,供其他代码使用。
//导入mysql连接包
const mysql=require(‘mysql’);
let dbconfig={
host: ‘db_host’,
user: ‘db_user’,
password: ‘db_pass’,
database: ‘db_name’,
debug: true
};
function handleDisconnection() {
db=mysql.createConnection(dbconfig);
db.connect(function (err) {
if (err) {
console.log(‘db connect error:’ + err.message + “2秒后重连”);
setTimeout(handleDisconnection, 2000);
}
});
db.on(‘error’, function (err) {
console.log(err);
if (err.code===’PROTOCOL_CONNECTION_LOST’) {
console.log(‘db error执行重连:’ + err.message);
handleDisconnection();
} else {
throw err;
}
});
db.querySync=function(sql) {
return new Promise(function(resolve, reject) {
db.query(sql, function(error, results, fields) {
if(error) reject(error);
else resolve({results, fields})
})
})
};
return db;
}
//创建连接conn
exports.db=handleDisconnection();
const mysql=require(‘mysql’);
let dbconfig={
host: ‘db_host’,
user: ‘db_user’,
password: ‘db_pass’,
database: ‘db_name’,
debug: true
};
function handleDisconnection() {
db=mysql.createConnection(dbconfig);
db.connect(function (err) {
if (err) {
console.log(‘db connect error:’ + err.message + “2秒后重连”);
setTimeout(handleDisconnection, 2000);
}
});
db.on(‘error’, function (err) {
console.log(err);
if (err.code===’PROTOCOL_CONNECTION_LOST’) {
console.log(‘db error执行重连:’ + err.message);
handleDisconnection();
} else {
throw err;
}
});
db.querySync=function(sql) {
return new Promise(function(resolve, reject) {
db.query(sql, function(error, results, fields) {
if(error) reject(error);
else resolve({results, fields})
})
})
};
return db;
}
//创建连接conn
exports.db=handleDisconnection();
© 版权声明
文章版权归作者所有,未经允许请勿转载。