我认为我的关系没有得到正确发布。有时我会收到一条错误,指出我的游泳池已达到极限。此外,有时随机访问数据库需要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;
答案 0 :(得分:0)
我遇到了同样的问题,https://github.com/mysqljs/mysql/issues/1518帮助了我。注意行
是的,那是问题所在。我在每个上面调用mysql.createPool 查询。
实际上,您正在从query.js导入数据库(比如说您的邮政编码)来触发查询。每次启动查询时都会创建一个新池。要解决此问题,您可以将 createPool 代码块放到app.js中,并可以全局共享或者可以通过任何其他代码样式在query.js中使用。 参考官方文档https://github.com/mysqljs/mysql#pooling-connections查找行
由于pool.query方法是pool.getConnection的简写方法 - > connection.query - > connection.release()流,在通过pool.query添加的所有查询完成之前调用pool.end(),
后来我用它来阻止释放连接的头痛