DBAtlas · Atlas d'exploitation des bases de données

25001: active_sql_transaction

PostgreSQL

Que signifie cette erreur ?

Une commande qui ne peut s'exécuter qu'en dehors d'une transaction, ou à son début, a été appelée alors qu'une transaction était active. Certaines commandes ne s'exécutent pas à l'intérieur d'un bloc de transaction.

Cause

Des réglages comme SET TRANSACTION ISOLATION LEVEL doivent être émis avant la première requête du bloc ('SET TRANSACTION ISOLATION LEVEL must be called before any query'). De même, certaines commandes sont refusées dans un BEGIN/une transaction ouverte. Cela vient généralement d'une application qui désactive l'autocommit et démarre une transaction de façon implicite.

Comment la corriger

Émettez les réglages de niveau transaction tout au début de la transaction, avant l'exécution de toute requête : BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ... Vérifiez si la bibliothèque cliente ouvre une transaction implicite (paramètre autocommit). Pour les commandes qui ne peuvent pas s'exécuter dans un bloc de transaction, fermez d'abord la transaction en cours avec COMMIT/ROLLBACK.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur