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 ?