节点js mysql不能在调用quit之后排队查询

我正在使用node.js和mysql,经常运行sql命令。

我得到这个错误: Cannot enqueue Handshake after invoking quit

这是我的时候

 connection = mysql.createConnection(sqlDetails); connection.connect(); 

 connection.end(); 

如果我注释.connect.end行,那么我得到错误ER_CON_COUNT_ERROR: Too many connections

有谁知道如何解决这个问题?

谢谢

如果你真的想closures连接(为什么?如果你经常运行sql命令,你可能想要重用它,甚至更好 – 使用连接池),你需要在查询结果callback中做到这一点。 所有命令都被放入命令队列并按顺序处理。

这就是你在做什么:

  • 打开连接stream到MySQL
  • 添加Handshake命令来排队
  • 将Query命令添加到队列中
  • 将Quit命令添加到队列中,将连接标记为closures
  • 开始处理命令
  • 现在握手在连接处于“closures”状态时被处理

由于节点js是asynchronous的,connection.connect()和connection.end()并行执行,

如果要指定执行顺序,请使用类似的callback

 connection = mysql.createConnection(sqlDetails); connection.connect(function(err,callback){ connection.query(function(err,callback){ connection.end(); }); });