Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从节点服务器到mysql数据库的多重连接,如何修复_Node.js_Node Mysql - Fatal编程技术网

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

Node.js 从节点服务器到mysql数据库的多重连接,如何修复,node.js,node-mysql,Node.js,Node Mysql,使用以下代码,我通常在节点服务器启动后执行第一个查询。第二个查询将抛出以下错误: 错误:在已将握手排队后,无法将握手排队 我理解错误的含义,我知道我必须修复与MySql并行的并发连接。我不明白的是我必须如何重写代码,因为我还在学习node 我还读到,建立连接池可以解决问题(可能是因为如果我为同一查询打开两个连接,它不会抱怨),但在修复错误时实现它有用吗?很难说,因为代码不是完整的控制器,但是看起来con是全局的,每次有传入请求时,您都运行con.connect()。您应该只使用一次con.con

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

错误:在已将握手排队后,无法将握手排队

我理解错误的含义,我知道我必须修复与MySql并行的并发连接。我不明白的是我必须如何重写代码,因为我还在学习node


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

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


尝试更改为连接池,这样就更容易发现您在何处保留连接以及在何处将其释放回连接池。

请注意SQL注入漏洞。始终使用参数化查询。@Alejandro是的,谢谢。这是该问题的简化代码。生产环境中都有参数化查询。请使用con.connect一次,并在需要进行查询时传递连接。这样,您只能创建一次连接。在您的代码片段中,您每次都会创建一个连接。@Rajikimal是的,我知道这就是我在问题中所写的问题。我的问题是如何做到这一点。:-)对Con在全球范围内定义,并在世界各地的不同地方使用。如何重写查询部分以避免再次调用con?那是我的question@LelioFaieta也许将实现更改为使用连接池,如果仍然不起作用,请与我们联系。您的答案是,在我已经提出的问题中,没有添加任何字节的信息。
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");
          });
        });