mysql - NodeJS MySQL,在连接丢失时重新连接?
问题描述
function Connect() {
var connection = mysql.createConnection({
host : 'hidden',
user : 'hidden',
password : 'hidden',
database : 'hidden'
});
connection.connect(function(err) {
if (err) {
console.log('Error connecting to Database'.red);
setInterval(Connect, 5000);
connection.end();
}else{
console.log('Connected to Database'.green);
}
});
}
Connect();
我正在尝试做到这一点,这样如果数据库失去连接,我的代码就不会崩溃。
它将连接到一个容易重启和更新的数据库,这意味着程序将在失去连接时崩溃。
我尝试添加 setInterval(Connect, 5000);
,所以如果它失去连接但没有运气,它会尝试重新连接。
有人可以帮我解决我哪里出错了吗?
解决方案
假设您使用的是mysql
npm 包,您可以使用库提供的连接池:
https://github.com/mysqljs/mysql#pooling-connections
当从池中检索到先前的连接时,会向服务器发送一个 ping 数据包以检查连接是否仍然良好。
它相当容易使用,而不是使用createConnection
你可以使用createPool
var pool = mysql.createPool({
connectionLimit : 2,
host : 'example.org',
user : 'bob',
password : 'secret',
database : 'my_db'
});
然后使用池查询数据库。
它还有许多额外的好处,例如负载平衡连接。
推荐阅读
- r - 如何使用 R 清洁城市和州(全称和缩写)
- reactjs - 如何整合外部反应
- java - java容器对象交换数组方法
- javascript - 我的两个 Jquery 脚本相互干扰
- python - Tensorflow seq2seq 聊天机器人总是给出相同的输出
- bash - 如何检查是否在 bash 中传入了空的命名参数?
- node.js - 完成从 express 中删除 api 后如何发出另一个 post 请求?
- gdb - 有和没有 GDB 的环境布局差异
- javascript - socket.io 代码组织和计时 ES6
- php - 我的 CSS 文件在我的 PHP 文件中不起作用