猿问

node mysql connection.end() 和 connection.destroy()

npm mysql 文档中我们可以看到对connection.end()和connection.destroy()区别的描述是connection.end()会确保在把COM_QUIT包发送给mysql服务器之前执行队列中的查询语句,如果在COM_QUIT包发送之前发生了致命错误会把错误传递给回调函数的参数err,但连接无论如何也都是会被中断的。而destroy()是没有回调函数直接中断的。(不知道有没有翻译对,看了网上一些文章也是大概这么说的)。我的问题是,COM_QUIT发送前队列中的查询语句指的是什么,这个队列是哪来的,有什么实际的情景可以说明一下吗?这两种终止连接的方式对于用户有什么不同的影响?如果只是有没有回调函数的区别,那我要终止连接是两个都可以任意使用吗?



海绵宝宝撒
浏览 685回答 1
1回答

人到中年有点甜

查询队列指的是什么在官方文档的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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答