为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

海绵宝宝撒 2019-03-05 15:19:36
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


查看完整回答
反对 回复 2019-03-15
  • 1 回答
  • 0 关注
  • 684 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信