weixin_45907466 2023-01-25 11:46 采纳率: 50%
浏览 12

express中使用mysql ,运行长时间之后报read ECONNRESET

express中使用mysql ,运行长时间之后报read ECONNRESET

以下是使用了connect和end 的情况

exports.login = async (req, res, next) => {
  try {
    const username = req.body.reqdata.username;
    const password = req.body.reqdata.password;
    const sql = `select * from user where loginid='${username}' and password ='${password}'`;
    //console.log(sql)
db.connect()
    db.query(sql, (err, results, fields) => {
      console.log(results);
      console.log(err);
      if (err) {
        res.send({
          err: err.message,
        });
      }
      if (results.length > 0) {
        //生成token,并且在返回数据中返回,设置了60S失效的token
        const token = jwt.sign(req.body, "dsj", { expiresIn: 36000 });
        res.send({
          message: 0,
          data: results,
          token: token,
        });
      } else {
        res.send({
          message: 1,
          data: results,
        });
      }
    });
   db.end()
  } catch (err) {
    next(err);
  }
};

在每个请求中使用connect和end会导致只有第一次请求有返回,后续请求都报Cannot enqueue Handshake after invoking quit

如果不适用connect和end开启的时候能运行一段时间,长时间之后就报read ECONNRESET。

查阅了很多文章,尝试了在每次连接之后调用end来结束连接,这样就会导致只能第一次连接成功,后续的都失败,即使在每个请求之前重新使用connect也不行,很多文章说去掉end让mysql自己放掉连接,但这又会导致运行一段时间之后报read ECONNRESET。陷入了死循环,求解如何能解决上述问题并稳定运行?

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 创建了问题 1月25日

      悬赏问题

      • ¥15 ABAQUS简单的带传动系统运转不了
      • ¥15 关于git actions自动部署的问题
      • ¥25 小程序 view wx:for 循环太多时,如何在循环结束执行某个事件?
      • ¥15 曲率模态差matlab程序计算
      • ¥15 大概算是比较简单的坐标系旋转问题
      • ¥15 关于#python#的问题:安装完gym环境后
      • ¥15 关于稳像云台姿态控制中相机姿态误差表征
      • ¥15 求sm16306s驱动例程
      • ¥15 本地生活媒体平台口碑选品怎么获得权限
      • ¥15 R语言 回归树/袋装树/随机森林预测