DBAtlas · Atlas de operaciones de bases de datos

25001: active_sql_transaction

PostgreSQL

¿Qué significa?

Se llamó, con una transacción activa, a un comando que solo puede ejecutarse fuera de una transacción o al inicio de ella. Algunos comandos no se ejecutan dentro de un bloque de transacción.

¿Por qué ocurre?

Ajustes como SET TRANSACTION ISOLATION LEVEL deben emitirse antes de la primera consulta del bloque ('SET TRANSACTION ISOLATION LEVEL must be called before any query'). De forma similar, algunos comandos se rechazan dentro de un BEGIN/transacción abierta. Suele deberse a que la aplicación desactiva el autocommit e inicia una transacción de forma silenciosa.

Cómo solucionarlo

Emita los ajustes de nivel de transacción al principio de la transacción, antes de ejecutar cualquier consulta: BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ... Compruebe si la biblioteca cliente abre una transacción implícita (ajuste de autocommit). Para los comandos que no pueden ejecutarse dentro de un bloque de transacción, cierre primero la transacción actual con COMMIT/ROLLBACK.

Abrir en DBAtlas →

Más entradas de este motor