NodeJS (Express) with MySQL - 如何处理连接重置?

问题描述

我使用 NodeJS 运行我的网站,我使用的是 Express 框架。 由于 MySQL 是我托管的唯一数据库类型,因此我选择了它。

我创建了一个 db.js 文件:

const mysql = require('mysql');

const con = mysql.createConnection({
    host: .........
    user: ...........
    password: ............
    database: ............
});
  
con.connect(function(err) {
    if (err) {
        //throw err;
        console.error(err.message);
    } else {
        console.log('Connected Ro MySQL!');
    }
});

module.exports = con;

我使用它就像:

const db = require(path.join(__dirname,'db'));

    db.query('select * from table where name = ?',request.params.id,(error,result) => {
        if (error) { 
            response.send(error.message);
        } else {
            //My Render Stuffs Here
            });
        }
    });

我的网站运行良好,但有时假设每 2 周重置一次 MySQL 连接,我认为数据库由于某种原因在一分钟左右不可用,然后我的网站崩溃,我必须手动重新启动 NodeJS 什么很烦人。

控制台错误:

node:events:355
      throw er; // Unhandled 'error' event
      ^
Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:211:20)
[...]
  errno: -4077,code: 'ECONNRESET',syscall: 'read',fatal: true
}

我应该如何更改代码以防止崩溃?我替换了 throw err;与 console.error(err.message);但它仅在我启动网站时有效,在运行时发生连接重置时无效。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)