Ошибка MySQL с подготовленными операторами: не может создать больше, чем Max Precate_stmt_count операторыMySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка MySQL с подготовленными операторами: не может создать больше, чем Max Precate_stmt_count операторы

Сообщение Anonymous »

Я сталкиваюсь с проблемой с операциями по базе данных бэкэнд, что приводит к следующей ошибке: < /p>

Код: Выделить всё

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)"
}
Эта ошибка указывает на то, что я превысил предел max_prepared_stmt_count на моем сервере MySQL. Я понимаю, что это ограничение установлено для предотвращения истощения ресурсов. Однако я использую пул соединений и явно освобождаю соединения после каждого запроса, что, по моему мнению, должно также освобождать связанные подготовленные операторы.
Вот соответствующий фрагмент кода для моей функции выполнения базы данных:
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «MySql»