DBAtlas · Atlas de operações de banco de dados

25001: active_sql_transaction

PostgreSQL

O que significa?

Um comando que só pode ser executado fora de uma transação, ou no início dela, foi chamado com uma transação ativa. Alguns comandos não são executados dentro de um bloco de transação.

Por que acontece?

Configurações como SET TRANSACTION ISOLATION LEVEL devem ser emitidas antes da primeira consulta do bloco ('SET TRANSACTION ISOLATION LEVEL must be called before any query'). Da mesma forma, alguns comandos são rejeitados dentro de um BEGIN/transação aberto. Geralmente decorre de a aplicação desabilitar o autocommit e iniciar uma transação silenciosamente.

Como resolver

Emita as configurações de nível de transação logo no início da transação, antes de qualquer consulta: BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ... Verifique se a biblioteca cliente abre uma transação implícita (configuração de autocommit). Para comandos que não podem ser executados dentro de um bloco de transação, feche primeiro a transação atual com COMMIT/ROLLBACK.

Abrir no DBAtlas →

Mais entradas deste banco