sql >> Database >  >> RDS >> PostgreSQL

Waarom geeft deze PostgreSQL-transactie WAARSCHUWING:er is geen transactie bezig?

Dit lijkt een misverstand te zijn. Overweeg mijn vette nadruk :

De WAARSCHUWING hoort duidelijk bij een andere gelijktijdige transactie , die geen expliciete transactie startte. De commit is misplaatst daar , omdat het in de autocommit-modus werkt.

Als je je log blijft lezen, zul je waarschijnlijk verderop een vermelding voor de commit vinden:

Foutopsporing

Als je dat noch een rollback . vindt invoer noch een fout, ik zou controleren op problemen in uw app en niet-vastgelegde zombie-transacties achterlaten, wat een slechte zaak zou zijn .

Start het onderzoek door de systeemweergave pg_stat_activity terwijl u verbonden bent met uw database:

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%';

De state waarde idle is niet per se verdacht - alleen een sessie die wacht op invoer.
Maar idle in transaction en idle in transaction (aborted) zijn.

Meer in de handleiding hier of deze gerelateerde antwoorden:



  1. Maak een Optgroup van een array van gegevens

  2. Hoe u trapsgewijze vervolgkeuzelijsten maakt met mysql en php

  3. mysql-gegevenstype om alleen maand en jaar op te slaan

  4. DATEDIFF() Voorbeelden – MySQL