NodeJS MySQL,在连接丢失时重新连接?

myzjeezk  于 2022-10-22  发布在  Mysql
关注(0)|答案(1)|浏览(169)
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);,以便在失去连接时尝试重新连接,但没有成功。
有人能帮我找出哪里出了问题吗?

dced5bon

dced5bon1#

假设您使用的是mysql npm包,则可以使用库提供的连接池:
https://github.com/mysqljs/mysql#pooling-连接
当从池中检索到以前的连接时,将向服务器发送一个ping数据包,以检查连接是否仍然良好。
它很容易使用,您可以使用createPool代替createConnection

var pool  = mysql.createPool({
  connectionLimit : 2,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
});

然后使用该池查询数据库。
它还有许多额外的好处,例如负载平衡连接。

相关问题