mysql - Nodejs - MySQL - 如何解决此脚本中的“连接太多”错误?
问题描述
我的应用程序有五个 node.js 脚本,它们使用 MySQL 数据库进行数据管理。每个脚本都读取和写入 MySQL 表。有必要提到我的系统流量很大。不幸的是,我多次收到“连接太多”错误。我与 MySQL 数据库通信的功能是:
let mysql = require('mysql2');
function doSqlCommand(inputArguments = {}, callbackFunction){
var outputArguments = {};
if (objType = Object.prototype.toString.call(inputArguments) != '[object Object]') {
outputArguments['viResult'] = false;
return false;
}
if ('mtConnectData' in inputArguments) { mtConnectData = inputArguments['mtConnectData']; }
if ('mtSqlQuery' in inputArguments) { mtSqlQuery = inputArguments['mtSqlQuery']; }
var pool = mysql.createPool(mtConnectData);
function executeQuery(query, callback) {
pool.getConnection(function (err, connection){
if(err){
return callback(err, null);
}else if(connection){
connection.query(query, function (err, rows, fields){
connection.release();
if (err){
return callback(err, null);
}
return callback(null, rows);
})
}else{
return callback(true, "No Connection");
}
});
}
function getResult(query, callback) {
executeQuery(query, function (err, rows) {
if(!err){
callback(null, rows);
}else{
callback(err, true);
}
});
}
getResult(mtSqlQuery, function (error, result, fields) {
if(!error){
outputArguments['viSql'] = mtSqlQuery;
outputArguments['viFields'] = fields;
outputArguments['viResult'] = result;
outputArguments['viReturn'] = true;
callbackFunction(outputArguments);
pool.end();
}else{
outputArguments['viSql'] = mtSqlQuery;
outputArguments['viError'] = error;
outputArguments['viReturn'] = false;
callbackFunction(outputArguments);
pool.end();
}
});
}
在我的不同脚本中,我有:
let dbConCentral = {
connectionLimit: 10,
host: 'localhost',
port: 3306,
user: 'user',
database: 'database',
password: 'password',
charset: 'utf8mb4',
debug: false,
};
var mtTargetSymbol = 'AABBCC';
var mtSqlQuerySelect = `SELECT * FROM table_rules WHERE symbol='${mtTargetSymbol}'`;
sendingSelectArguments = {
mtConnectData: dbConCentral,
mtSqlQuery: mtSqlQuerySelect,
}
parsDbsMysql.doSqlCommand(sendingSelectArguments, function (callbackSelectFunction){
console.log(callbackSelectFunction);
});
似乎创建的池无法正常工作。谁能告诉我如何解决“连接太多”错误?
解决方案
推荐阅读
- java - 如何在 onClick 侦听器中设置 Textview 可见性?
- excel - 如何计算 Word 中的日期以添加到邮件合并中?
- python - 当用户到达时,Discord bot 不会向频道发送消息
- c# - 如何导航 android xamarin
- azure-functions - 在 Azure Function 中使用 Application Insights 丰富 HTTP DependencyTelemetry
- sql - 如何根据元素的链接标记组 ID
- java - 为什么通过注释设置超时的 ChainedTransactionManager 不起作用?弹簧靴
- node.js - nodejs在事件处理程序中处理异常:safeway?
- fonts - 使用 MPDF 生成 pdf,非中断空间显示为不支持的字符
- python - 当我在 python 中弹出生成的随机数密钥时,我收到一个密钥错误