Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
应用程序不以MySQL池终止_Mysql_Node.js_Node Mysql - Fatal编程技术网

应用程序不以MySQL池终止

应用程序不以MySQL池终止,mysql,node.js,node-mysql,Mysql,Node.js,Node Mysql,我正在编写一个nodejs应用程序,希望使用连接池 但是,以下应用程序不会终止-尽管我希望它在调用connection.end()后终止 若我使用一个连接而不是池,那个么应用程序运行得很好。我是否需要以某种方式终止池 使用的库: node.js版本:Ubuntu上的0.10.4 var mysql = require('mysql'); var pool = mysql.createPool({ host : 'example.org', user :

我正在编写一个nodejs应用程序,希望使用连接池

但是,以下应用程序不会终止-尽管我希望它在调用
connection.end()后终止

若我使用一个连接而不是池,那个么应用程序运行得很好。我是否需要以某种方式终止池

使用的库
node.js版本:Ubuntu上的0.10.4

var mysql      = require('mysql');
var pool = mysql.createPool({
    host     : 'example.org',
    user     : 'myuser',
    password : 'youbet',
    database : 'notrevealingdetails',
    insecureAuth: true
});

function getCampaignData(callback)
{
    pool.getConnection(function(err, connection) {
        if(err) throw err;

        connection.query(
            'SELECT cam.id, cam.name AS campaign_name, cam.subdomain, usr.email, usr.display_name AS user_displayname ' +
            'FROM campaigns AS cam INNER JOIN users AS usr ON usr.id = cam.user_id ' +
            'WHERE cam.state=2',
            function(err, rows) {
                callback(err, rows,connection);
                //console.log('called end()');
        }); // callback function for connection.query
    }); // end pool.GetConnection
}

getCampaignData(function(err, rows, connection) {
    if (err) throw err;


    connection.end();
    console.log("I expect my app to terminate");
});

我也遇到了同样的问题,但是看看源代码 我发现这个池,至少在它当前的实现中,有一个end()方法,它可以在所有连接上调用end()

它还接受在所有连接实际结束后(或发生错误时)调用的回调函数

我会用

getCampaignData(function(err, rows, connection)
{
    if (err) throw err;
    connection.release();
    console.log("I expect my app to terminate");
});

尝试使用connection.destroy()instead@spotirca
connection.destroy()
将(根据文档)终止连接。如果我这样做,那么首先使用游泳池是没有意义的,对吗?(但它有效)我所说的“有效”是指:应用程序终止。我仍然想要一个让游泳池工作的方法
getCampaignData(function(err, rows, connection)
{
    if (err) throw err;
    connection.release();
    console.log("I expect my app to terminate");
});