PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Warum gibt diese PostgreSQL-Transaktion WARNUNG aus:Es wird keine Transaktion ausgeführt

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: