node mysql 断开连接_Node中怎么保持MySql一直连接不断开

在Node.js使用MySQL开发时,长时间无操作会导致MySQL断开连接。本文介绍了如何通过设置自动重连和定时ping数据库来保持连接。通过创建数据库连接池,监听错误事件并重新连接,以及每小时ping一次数据库,可以有效防止连接断开。
摘要由CSDN通过智能技术生成

Node中怎么保持MySql一直连接不断开

2f1fc01e16c5a3749b8c08a098412bc1.png

Amaya丶夜雨  |  前端菜鸡  |  MySql  |  2019-05-18 15:03:08

864dffa0045b1482b4130667f7baeec9.png 0 | 

5aaa490139cc6f5c391b8bd2d0bff6ed.png 0 | 

b4997b904e4ee148d7e0880ecc336bed.png 0

因为以前用的是SQL Server数据库,用ASP.NET来开发网站,现在采用MySQL+Node来开发,所以碰见的坑不少。

这里我分享一个可以采用的方法让MySql保持数据连接。

在MySql中,长时间没有对数据库进行任何操作,MySql Server就会关闭此链接。

如果没有设置MySql的 自动重连,那么我们的数据隔一段时间就会 “不见” 。

所以我们应该在js中应该编写如:连接出错重新连接,每过多久 ping 一次数据库来保持连接,等等。

下面就是采用 Node 来连接 MySql 且保持连接的可用方法(放入连接的js中即可):

// 引入MySql数据库连接依赖 npm -i mysql

var mysql = require('mysql');

// 创建MySql连接池并配置参数

const mysqlConf = {

host: '***.**.***.**', //ip或域名

user: 'root', //用户名

password: '**********', //密码

database: '********', //数据库的名称

dateStrings: true

};

// 用于保存数据连接实例

var db = null;

var pingInterval;

// 如果数据连接出错,则重新连接

function handleError(err) {

logger.info(err.stack || err);

connect();

}

// 建立数据库连接

function connect() {

if (db !== null) {

db.destroy();

db = null;

}

db = mysql.createConnection(mysqlConf);

db.connect(function (err) {

if (err) {

logger.info("error when connecting to db,reConnecting after 2 seconds:", err);

setTimeout(connect, 2000);

}

});

db.on("error", handleError);

// 每个小时ping一次数据库,保持数据库连接状态

clearInterval(pingInterval);

pingInterval = setInterval(() => {

console.log('ping...');

db.ping((err) => {

if (err) {

console.log('ping error: ' + JSON.stringify(err));

}

});

}, 3600000);

}

connect();

到这里就算结束了,希望对你们有所帮助吧.

附:

(文章为原创,转载记得加上出处哦。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值