Код: Выделить всё
execute error: Error: Can't create more than max_prepared_stmt_count statements (current value: 16382)
error: Error: Can't create more than max_prepared_stmt_count statements (current value: 16382)
at PromisePoolConnection.execute (/app/node_modules/mysql2/promise.js:112:22)
at exports.execute (/app/utils/database.js:8:37)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {
code: 'ER_MAX_PREPARED_STMT_COUNT_REACHED',
errno: 1461,
sql: 'UPDATE user_login SET expired_flag=1 WHERE user_id=? AND token=?;',
sqlState: '42000',
sqlMessage: "Can't create more than max_prepared_stmt_count statements (current value: 16382)"
}
Вот соответствующий фрагмент кода для моей функции выполнения базы данных:
const mysql = require("mysql2");
const config = require("../configs/databaseConfig");
const connectionPool = mysql.createPool(config).promise();
exports.execute = async (sql, params) => {
const connection = await connectionPool.getConnection(); // Get a connection from the pool
try {
const [rows] = await connection.execute(sql, [...params]);
return { data: rows };
} catch (err) {
console.log(`execute error: ${err}`);
return { error: err };
} finally {
connection.release(); // Release the connection back to the pool
}
};
< /code>
Этот код получает соединение из пула, выполняет запрос, а затем выпускает соединение в блоке, чтобы убедиться, что оно всегда возвращается в пул. < /p>
Учитывая эту настройку, я озадачен тем, почему я попадаю в предел MAX_PREPARED_STMT_COUNT. Что я делаю не так? Есть ли что -то, что мне не хватает в том, как подготовленные утверждения обрабатываются с помощью объединения соединений в MySQL2? Подготовленные заявления не имеют автоматического складывания при выпуске подключения? Каковы лучшие практики, чтобы избежать этой проблемы при использовании объединения соединений?
Подробнее здесь: https://stackoverflow.com/questions/793 ... red-stmt-c