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.