亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 706 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號