【问题标题】:nodejs mariadb connection not disconnectingnodejs mariadb连接没有断开
【发布时间】:2021-08-22 03:56:54
【问题描述】:

您好,我正在使用 nodejs 创建一个 REST API

但我遇到了问题

先看代码

var http = require('http');
var url = require('url');
var mariadb = require('mariadb');

    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        var db_conn  = mariadb.createPool({
            host:"localhost",
            user:"root",
            password:"",
            database:"database",
            connectionLimit:1
        });
        db_conn.getConnection().then(db=>{
            db.query("select * from array_languages").then(data => {
                db.end();
                res.write(JSON.stringify(data));
                res.end();
            });
        });
    }).listen(8080,"localhost");

这段代码完美地返回了数据。

但是每次我发出请求时,尽管请求已经完成,连接仍然是打开的。

预期结果

通常情况下, 当我执行脚本时,执行后 MySql 连接关闭

我已尝试关闭连接

通过使用conn.end()
但连接仍然打开

我来自 PHP 背景

在 PHP 中,如果您请求一个页面,执行后所有连接将自动关闭。 但在这里我面临着新的挑战。

请求完成后如何关闭连接?

【问题讨论】:

  • 您可能想要使用连接池,而不是为每个查询打开和关闭一个全新的连接。 github.com/mysqljs/mysql#pooling-connections
  • @Tomalak 谢谢,但我使用的是 mariadb ,而不是 MySQL
  • MariaDB 和 MySQL 是一回事。 (而且你没有说你使用的是哪个库,所以这是我最好的猜测 - 使用连接池的建议无论哪种方式都是有效的。)
  • @Tomalak 我试过 mysql 但它抛出“重新抛出非 Mysql 错误”

标签: javascript mysql node.js mariadb node-modules


【解决方案1】:

我忘记了这个问题。 不过我今天试着解决了。

已解决

我试图关闭连接,但我应该关闭 连接池

完整代码

var http = require('http');
var url = require('url');
var mariadb = require('mariadb');

    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        var db_conn  = mariadb.createPool({
            host:"localhost",
            user:"root",
            password:"",
            database:"database",
            connectionLimit:1
        });
        db_conn.getConnection().then(db=>{
            db.query("select * from array_languages").then(data => {
                db_conn.end();
                db.end();
                res.write(JSON.stringify(data));
                res.end();
            });
        });
    }).listen(8080,"localhost");

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2021-05-30
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多