Errore PostgreSQL: current transaction is aborted

ERROR:  current transaction is aborted, commands ignored until end of transaction block

Questo errore non è mai la causa radice. Qualche statement precedente nella stessa transazione è già fallito, la transazione è entrata nello stato aborted, e PostgreSQL ora rifiuta ogni comando successivo finché non termini la transazione con ROLLBACK. La domanda a cui rispondere è sempre: qual è stato il primo errore?

Cosa significa questo errore

Una volta che uno statement dentro una transazione fallisce, PostgreSQL garantisce che la transazione nel suo complesso non possa fare commit — consentire ad altri statement di "riuscire" ti permetterebbe di committare un'unità di lavoro applicata a metà. Quindi li rifiuta tutti, ripetendo questo messaggio, finché l'applicazione non emette ROLLBACK (o non fa rollback a un savepoint preso prima del fallimento).

Se vedi valanghe di 25P02 nei tuoi log, leggile come un sintomo a due strati: un errore originale (una riga, facile da mancare) e un'applicazione che ha continuato a usare la connessione come se nulla fosse (la valanga).

Cause comuni

Come diagnosticarlo

Come risolverlo

🔍 Spesso trovati insieme: duplicate key value violates unique constraint — il "primo errore" più comune dietro una valanga di 25P02.