mysql - 应用程序不会以 MySQL 池终止

标签 mysql node.js node-mysql

我正在编写一个 nodejs 应用程序并想使用连接池。

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

后终止

如果我使用一个连接而不是池,应用程序工作得很好。我需要以某种方式终止池吗?

使用的库:https://github.com/felixge/node-mysql
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");
});

最佳答案

我遇到了同样的问题,但是查看源代码 https://github.com/felixge/node-mysql/blob/master/lib/Pool.js 我发现该池,至少在其当前实现中,有一个 end() 方法,该方法会在所有连接上调用 end()。

它还接受一个回调函数,在所有连接实际结束后(或每当发生错误时)调用。

pool.end(function (err) {
    if (err) console.error("An error occurred: " + err);
    else console.log("My app terminated");
});

关于mysql - 应用程序不会以 MySQL 池终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741749/

相关文章:

javascript - Grunt - 如何使用 grunt 缓存破坏更新 js 文件中的 html 文件引用?

node.js - Next.js:ComponentWillMount 与 getInitialProps

mysql - SQL 导出的内容无法使用 felixge/node-mysql 正确执行

mysql - 如何在单个查询中返回 node.js mysql 中的嵌套 json

javascript - Firebase 模块在部署功能时需要旧版本的 Node

Node.js、mysql 和事务与 util(async/await)

MySQL:加法和乘法

MySQL:按值优先级获取列

c# - 如何在不使用mysql中的函数的情况下使每个单词的首字母大写?

mysql - 错误 1064 (42000) : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version