npm mysql 文档中我们可以看到对connection.end()和connection.destroy()区别的描述是connection.end()会确保在把COM_QUIT包发送给mysql服务器之前执行队列中的查询语句,如果在COM_QUIT包发送之前发生了致命错误会把错误传递给回调函数的参数err,但连接无论如何也都是会被中断的。而destroy()是没有回调函数直接中断的。(不知道有没有翻译对,看了网上一些文章也是大概这么说的)。我的问题是,COM_QUIT发送前队列中的查询语句指的是什么,这个队列是哪来的,有什么实际的情景可以说明一下吗?这两种终止连接的方式对于用户有什么不同的影响?如果只是有没有回调函数的区别,那我要终止连接是两个都可以任意使用吗?
1 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
查询队列指的是什么
在官方文档的Introduction部分其实就讲到了,文档传送门:
Every method you invoke on a connection is queued and executed in sequence.
Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.
举例,下面的两个调用,在内部是排队执行的。
connection.query('SELECT * FROM hello'); connection.query('SELECT * FROM world');
end、destroy的区别
两者的区别很明显,还是以前面的代码为例子。
1、connection.end():把查询1、查询2顺利执行完,得到查询结果后,断开mysql服务器的连接。
2、connection.destryo():直接断开连接,不管还有多少查询没执行完。
connection.query('SELECT * FROM hello'); // 查询1 connection.query('SELECT * FROM world'); // 查询2
添加回答
举报
0/150
提交
取消