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

因为以前用的是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();

 



posted @ 2019-06-11 10:53  Amayaliu  阅读(2890)  评论(0编辑  收藏  举报