gpt4 book ai didi

javascript - Node.js MySQL 连接未正确释放

转载 作者:行者123 更新时间:2023-11-29 18:09:48 25 4
gpt4 key购买 nike

我认为我的连接没有正确释放。有时我会收到一条错误消息,指出我的池已达到其限制。此外,有时随机访问数据库需要 15 秒以上。每当我使用pool._allConnections.length检查正在使用的连接数时,它永远不会返回超过60的任何内容。这是我的代码:

const mysql = require('mysql');
const config = require('./config.json');

const pool = mysql.createPool({
connectionLimit : 999,
host: config.host,
user: config.user,
password: config.password,
database: config.database
});

const db = (() => {

_query = (query, params, callback) => {
pool.getConnection((err, connection) => {

if (err) {
callback(null, err);
} else {
connection.query(query, params, (err, rows) => {
connection.release();
if (!err) {
callback(rows);
} else {
callback(null, err);
}
});
}

});
};

return {
query: _query
};
})();

module.exports = db;

最佳答案

我遇到了同样的问题,https://github.com/mysqljs/mysql/issues/1518帮我。通知行

Yeah, that was the issue. I was calling mysql.createPool on each query.

实际上,您正在从 query.js 导入数据库(假设您的邮政编码)来触发查询。每次触发查询时,它都会创建一个新池。要解决此问题,您可以将 createPool 代码块放入 app.js 中,并可以在全局共享它,也可以通过任何其他代码样式在 query.js 中使用。引用官方文档https://github.com/mysqljs/mysql#pooling-connections查找行

Since the pool.query method is a short-hand for the pool.getConnection -> connection.query -> connection.release() flow, calling pool.end() before all the queries added via pool.query have completed,

后来我用它来停止释放连接的头痛

关于javascript - Node.js MySQL 连接未正确释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com