sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor giver denne PostgreSQL-transaktion ADVARSEL:der er ingen transaktion i gang

Dette ser ud til at være en misforståelse. Overvej min fed fremhævelse :

ADVARSELEN hører åbenbart til en anden samtidig transaktion , som ikke startede en eksplicit transaktion. commit er forlagt der , da den kører i autocommit-tilstand.

Hvis du bliver ved med at læse din log, vil du sandsynligvis finde en post til commit længere nede:

Fejlretning

Hvis du hverken finder det eller en rollback indtastning eller en fejl, ville jeg tjekke for problemer i din app, der efterlader uengagerede zombietransaktioner, hvilket ville være en dårlig ting .

Start undersøgelsen ved at tjekke systemvisningen pg_stat_activity mens du er tilsluttet din 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%';

state værdi idle er ikke nødvendigvis mistænkelig - bare en session, der venter på input.
Men idle in transaction og idle in transaction (aborted) er.

Mere i manualen her eller disse relaterede svar:



  1. Indsættelse af SQL Server-data med Oracle® SQL*Loader

  2. Afslutning af databaseforbindelse I Laravel 5.1

  3. Find den næste måned for en given dato i mysql

  4. Hvad er CHAR_LENGTH() i MySQL?