我真的很困惑在node-mysql中使用connection.end().
我不完全明白它的位置,目前我在查询后放置它然后如果我创建一个新的查询我得到一个错误 Cannot enqueue Query after invoking quit.
现在我的应用程序有一堆检查在这里是其中之一:
socket.on('connect', function(data,callBack){ var session = sanitize(data['session']).escape(); var query = connection.query('SELECT uid FROM sessions WHERE id = ?', [session], function(err,results){ if(err){ console.log('Oh No! '+err); }else{ io.sockets.socket(socket.id).emit('connectConfirm',{data : true}); } connection.end(); }); });
此后如果我有任何其他查询我得到错误发生.
我在我的jsFiddle中做了一个更明智的解释:http://jsfiddle.net/K2FBk/以更好地解释我得到的问题.node-mysql的文档并没有完全解释正确的放置位置connection.end()
应该去哪里避免这个错误?
根据文件:
使用end()关闭连接,这确保在将退出数据包发送到mysql服务器之前执行所有剩余的查询.
connection.end()
然后应该只在你停止向MySQL发送查询时调用,即当你的应用程序停止时.您不应该一直创建/结束连接:只需对所有查询使用相同的连接(或使用连接池以提高效率).