Cela semble être un malentendu. Considérez mon emphase audacieuse :
L'AVERTISSEMENT appartient évidemment à une transaction simultanée différente , qui n'a pas démarré de transaction explicite. Le commit
est mal placé là , puisqu'il fonctionne en mode autocommit.
Si vous continuez à lire votre journal, vous trouverez probablement une entrée pour le commit plus bas :
Débogage
Si vous ne trouvez ni cela ni un rollback
entrée ni erreur, je vérifierais les problèmes dans votre application en laissant des transactions zombies non validées, ce qui serait une mauvaise chose .
Commencez l'enquête en vérifiant la vue système pg_stat_activity
en étant connecté à votre base de données :
SELECT *
FROM pg_stat_activity
WHERE datname = current_database() -- only current database
AND pid <> pg_backend_pid() -- except your current session
AND state LIKE 'idle%';
L'state
valeur idle
n'est pas nécessairement suspect - juste une session qui attend une entrée.
Mais idle in transaction
et idle in transaction (aborted)
sont.
Plus d'informations dans le manuel ici ou ces réponses associées :
- Comment supprimer une base de données PostgreSQL s'il existe des connexions actives ?
- Y a-t-il un délai d'expiration pour les connexions PostgreSQL inactives ?