node-mysql2
node-mysql2 copied to clipboard
createPoolCluster does not maintain a connection to the same database throughout execution
when i call await execSQLFC(sql); then the problem occurs.
if i add await connection.query(USE ${process.env.SQL_FCDB}); it will working.
my configure (something wrong?):
****DBConfig.js
const mysql = require('mysql2/promise')
const poolCluster = mysql.createPoolCluster();
poolCluster.add('FloorcareDB', {
host: process.env.SQL_HOST,
user: process.env.SQL_USER,
password: process.env.SQL_PWD,
database: process.env.SQL_FCDB,
connectionLimit: 50,
waitForConnections: true,
maxPreparedStatements: 500,
queueLimit: 0,
dateStrings: true,
keepAliveInitialDelay: 10000,
enableKeepAlive: true
});
poolCluster.add('TraceDB', {
host: process.env.SQL_HOST,
user: process.env.SQL_USER,
password: process.env.SQL_PWD,
database: process.env.SQL_TRACEDB,
connectionLimit: 50,
waitForConnections: true,
maxPreparedStatements: 500,
queueLimit: 0,
dateStrings: true,
keepAliveInitialDelay: 10000,
enableKeepAlive: true
});
module.exports = poolCluster;
const poolCluster = require('../Config/DBConfig');
ExecuteSQL.js
const execSQLFC = async (sql, values) => {
let connection;
try {
connection = await poolCluster.getConnection('FloorcareDB');
await connection.query(`USE ${process.env.SQL_FCDB}`);
console.log('Connected to FloorcareDB');
const [dbCheck] = await connection.query('SELECT DATABASE() as currentDB');
console.log('Current database:', dbCheck[0].currentDB);
console.log('FloorcareDB');
const [rows] = await connection.query(sql, values);
connection.release();
return rows;
} catch (err) {
if (connection) connection.release();
console.error(err);
return err;
}
};
const execSQLTrace = async (sql, values) => {
let connection;
try {
connection = await poolCluster.getConnection('TraceDB');
await connection.query(`USE ${process.env.SQL_TRACEDB}`);
console.log('Connected to TraceDB');
const [dbCheck] = await connection.query('SELECT DATABASE() as currentDB');
console.log('Current database:', dbCheck[0].currentDB);
const [rows] = await connection.query(sql, values);
connection.release();
return rows;
} catch (err) {
if (connection) connection.release();
console.error(err);
return err;
}
};
module.exports = { execSQLFC, execSQLTrace };