NodeJS连接MySQL出现Cannot enqueue Handshake after invoking quit.

2017-07-14 13:51:58

原因在于node连接上mysql后如果因网络原因丢失连接或者用户手工关闭连接后,原有的连接挂掉,需要重新连接;如下代码,每次访问结束都关闭,每次开始访问前重连接下,代码中没有监听连接的fatal错误,copy需谨慎

[javascript] view plain copy

  1. var mysql = require('mysql');  

  2.   

  3. var connection = mysql.createConnection({  

  4.     host     : 'localhost',  

  5.     user     : 'root',  

  6.     password : '123456',  

  7.     database : 'test'  

  8. })  

  9. ,slice = [].slice  

  10. ;  

  11.   

  12. var commonMethod = function(callback){  

  13.     connection = mysql.createConnection(connection.config);  

  14.     connection.connect();  

  15.     callback.call(connection,callback);  

  16.     connection.end();  

  17. };  

  18.   

  19. var onerror = function(){  

  20.     console.log(err);  

  21. };  

  22.   

  23. var query = function(){  

  24.     var args = arguments;  

  25.     commonMethod(function(){  

  26.         connection.query.apply(connection,args)  

  27.         .on('error',onerror);     

  28.     });  

  29. };