Dies scheint ein Missverständnis zu sein. Beachten Sie meine fette Betonung :
Die WARNUNG gehört offensichtlich zu einer anderen gleichzeitigen Transaktion , die keine explizite Transaktion gestartet hat. Das commit
ist dort verlegt , da es im Autocommit-Modus arbeitet.
Wenn Sie Ihr Protokoll weiter lesen, finden Sie wahrscheinlich weiter unten einen Eintrag für den Commit:
Debuggen
Wenn Sie weder das noch ein rollback
finden Eintrag noch ein Fehler, würde ich nach Problemen in Ihrer App suchen, die nicht festgeschriebene Zombie-Transaktionen hinterlassen, was eine schlechte Sache wäre .
Starten Sie die Untersuchung, indem Sie die Systemansicht überprüfen pg_stat_activity
während Sie mit Ihrer Datenbank verbunden sind:
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%';
Der state
Wert idle
ist nicht unbedingt verdächtig - nur eine Sitzung, die auf Eingaben wartet.
Aber idle in transaction
und idle in transaction (aborted)
sind.
Mehr in hier im Handbuch oder diese verwandten Antworten:
- Wie lösche ich eine PostgreSQL-Datenbank, wenn aktive Verbindungen zu ihr bestehen?
- Ist da ein Timeout für inaktive PostgreSQL-Verbindungen?