单个查询执行多次

问题描述

我有一个连接到 MysqL 数据库的 Node 应用程序。

最近我发现了一个奇怪的事件。被调用查询被执行多次。更奇怪的事实是插入发生在不同的时间间隔,比如第一次在 3 分钟内,然后是 2 分钟,然后是 4 分钟的时间间隔。

我们使用了一个连接池来连接到 MysqL 数据库。连接池如下:

const MysqL = require("MysqL");
const connection = MysqL.createPool({
    host : "localhost",user : "admin",password : "1233123",database : "abcde",connectionLimit : 100,});

connection.on('connection',(connection)=>{
    console.log('Connected to the Database Successfully.');
});
module.exports = connection;

执行的查询如下:

Admin.multiplescan = (orderstatusdetails,result) => {
  console.log("Started");
  console.log("model",values);
  console.log("model",ids);
  console.log("model",status);
  console.log("executiveId",executiveId);
  sqlQuery = `INSERT INTO os( bookingId,status,description,type,signature,document1) VALUES ?`;
  sql.query(sqlQuery,[values],(error,response) => {
    if (error) {
      console.log(error);
      result(null,"error");
    } else {
      console.log("Success",response);
      // result(null,response);
      sqlQuery1 = `UPDATE cr SET job_sts = ? WHERE AWB IN ?`;
      sql.query(sqlQuery1,[status,[ids]],response) => {
        if (error) {
          console.log(error);
        } else {
          console.log(response);
        }
      });

      if (status === "inscan") {
        sqlQuery5 = `UPDATE jb SET statusFlag ='1' WHERE job='delivery' AND (bookingId IN ? OR bookingId IN (SELECT id FROM cr c2 where AWB IN ?))`;
        sql.query(sqlQuery5,[[ids],(err,res) => {
          if (err) {
            console.log("error",error);
          } else {
            console.log("res",res);
          }
        });

        sqlQuery6 = `UPDATE cr SET deliveryAssignedTo = NULL WHERE id IN ? OR AWB IN ?`;
        sql.query(sqlQuery6,res);
          }
        });
      }

      if (status === "outscan") {
        sqlQuery2 = `INSERT INTO jb(bookingId,ExecutiveId,job,assignedOnDateTime,jobDateTime,serviceCharge,MaterialCost) VALUES ?`;
        sql.query(sqlQuery2,[jobValues],response) => {
          if (error) {
            console.log(error);
          } else {
            console.log(response);

            sqlQuery3 = `UPDATE cr SET deliveryAssignedTo = ? WHERE AWB IN ?`;
            sql.query(sqlQuery3,[executiveId,response) => {
              if (error) {
                console.log(error);
              } else {
                console.log(response);
              }
            });
          }
        });
      }
      result(null,response);
    }
  });
  console.log("Ended");
};

是否强制关闭或释放 MysqL 节点中的池连接? 数据库备份设置主从设置会导致此问题吗?

解决方法

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

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

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