解决node连接数据库频繁关闭问题

因为以前用得时SQL Server数据库,用ASPNET来开发网站,现在采用MySQL+Node来开发,所以碰见的坑不少,这里来分享一个可以采用得方法让MySQL保持数据链接
在MySQL中,长时间没有对数据库进行任何操作,MySQL Server就会关闭此链接
如果没有设置MySQL得自动从连,那么我们的数据隔一段时间就会‘不见’
所以我们应该在js中编写如:连接出错重新连接,没过多久ping一次数据库来保持连接,等等
下面就是采用Node来连接MySQL且保持连接得可用方法

// 引入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、付费专栏及课程。

余额充值