DBAtlas · Атлас эксплуатации баз данных

25001: active_sql_transaction

PostgreSQL

Что это значит?

Команда, которая может выполняться только вне транзакции или в её начале, была вызвана при активной транзакции. Некоторые команды не выполняются внутри блока транзакции.

Почему возникает?

Настройки, такие как SET TRANSACTION ISOLATION LEVEL, должны задаваться до первого запроса в блоке ('SET TRANSACTION ISOLATION LEVEL must be called before any query'). Аналогично некоторые команды отклоняются внутри открытого BEGIN/транзакции. Обычно это происходит, когда приложение отключает autocommit и незаметно начинает транзакцию.

Как исправить

Задавайте настройки уровня транзакции в самом её начале, до выполнения любого запроса: BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ... Проверьте, не открывает ли клиентская библиотека неявную транзакцию (настройка autocommit). Для команд, которые не могут выполняться внутри блока транзакции, сначала завершите текущую транзакцию через COMMIT/ROLLBACK.

Открыть в DBAtlas →

Ещё по этой СУБД