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();
https://amayaliu.cn/
Amayaliu丶夜雨 个人博客编写中 欢迎前往浏览.