node.js操作mysql出错 Cannot enqueue Handshake after invoking quit

出错背景:

当第一次执行数据库操作时,是可以成功的。这时第二次执行数据库操作,就会报错如标题所示。

原因:

这是因为我们在使用.end()方法关掉连接之后,需要重新调用 createConnection重新创建一个连接。

解决方式:

例如下面封装的一个操作数据库的查询跟增加的方法。方法中每次都会首先使用 mysql.createConnection()创建新连接,再去执行数据库操作,而不是直接把它放到最外层。

var mysql  = require('mysql');  
// 数据库查询
exports.find=function(findSql,callback){
    var connection = mysql.createConnection({     
        host     : 'localhost',       
        user     : 'root',              
        password : '123456', 
        port: '3306',                   
        database: 'namesharing',
    });
    connection.connect();
    connection.query(findSql,function (err, result) {
        if(err){
          console.log('[SELECT ERROR] - ',err.message);
          return;
        }
        connection.end();
        callback(result)
    });
}


// 数据库增加
exports.insert=function(addSql,addSqlParams,callback){
    var connection = mysql.createConnection({     
        host     : 'localhost',       
        user     : 'root',              
        password : '123456',       
        port: '3306',                   
        database: 'namesharing',
    });
    connection.connect();
    connection.query(addSql,addSqlParams,function (err, result) {
        if(err){
            console.log('[INSERT ERROR] - ',err.message);
            return;
        }
        connection.end();
        // console.log('INSERT ID:',result);  
        callback(result)
    });
}

猜你喜欢

转载自blog.csdn.net/qq_36742720/article/details/89407662