从节点服务器到mysql数据库的多重连接,如何修复

问题描述

var MysqL = require('MysqL'); 
var con = MysqL.createConnection({
    host: "localhost",user: "***",password: "***",database: "***"
});

    case 'customer.updated':
      //il cliente ha aggiornato indirizzo mail nel portale e io devo fare lo stesso
        con.connect(function(err) {
          if (err) throw err;
          console.log("Connected!");
          var sql = "UPDATE utenze SET email='"+data.object.email+"' WHERE stripe_customer='"+data.object.id+"'";
          con.query(sql,function (err,result) {
            if (err) throw err;
            console.log("Customer record updated");
          });
        });

使用以下代码,我通常在节点服务器启动后执行一个查询。第二个查询将引发以下错误

错误:已将握手加入队列后,无法将其加入队列。

我了解错误的含义,并且我必须修复与MysqL并行执行的并发连接。我不了解的是,由于我仍在学习node,所以我必须重写代码

我还读到建立连接池可以解决此问题(可能是因为如果我为同一查询打开两个连接,它不会抱怨),但是在修复错误时实现它有用吗?

解决方法

很难说,因为代码不是完整的控制器,但是看起来con是全局的,并且每次有传入请求时您都在运行con.connect()。您只能con.connect()一次。因此,第一次工作,第二次给您“已经握手”错误。

尝试更改为连接池,这样会更容易发现保留连接的位置以及将其释放回连接池的位置。