node js mysql在调用quit后无法排队查询

时间:2014-04-27 20:19:05

标签: mysql node.js

我正在使用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

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

由于

2 个答案:

答案 0 :(得分:2)

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

这就是你在做的事情:

  • 打开到mysql的连接流
  • 将握手命令添加到队列
  • 将Query命令添加到队列
  • 将Quit命令添加到队列,将连接标记为关闭
  • 开始处理命令
  • 现在,当关闭'关闭时,处理握手。状态

答案 1 :(得分:2)

由于节点js是异步的,因此并行执行connection.connect()和connection.end(),

如果要指定执行顺序,请使用

之类的回调
connection = mysql.createConnection(sqlDetails);
connection.connect(function(err,callback){
    connection.query(function(err,callback){
         connection.end();
 });
});