Error de PostgreSQL: current transaction is aborted

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

Este error nunca es la causa raíz. Alguna sentencia anterior de la misma transacción ya falló, la transacción entró en estado abortado, y PostgreSQL ahora rechaza cada comando posterior hasta que termines la transacción con ROLLBACK. La pregunta a responder es siempre: ¿cuál fue el primer error?

Qué significa este error

Una vez que cualquier sentencia dentro de una transacción falla, PostgreSQL garantiza que la transacción en su conjunto no puede hacer commit — permitir que más sentencias "tuvieran éxito" te dejaría hacer commit de una unidad de trabajo aplicada a medias. Así que las rechaza todas, repitiendo este mensaje, hasta que la aplicación emite ROLLBACK (o revierte a un savepoint tomado antes del fallo).

Si ves oleadas de 25P02 en tus logs, léelas como un síntoma con dos capas: un error original (una línea, fácil de pasar por alto) y una aplicación que siguió usando la conexión como si nada hubiera pasado (la oleada).

Causas comunes

Cómo diagnosticarlo

Cómo solucionarlo

🔍 A menudo se encuentran juntos: duplicate key value violates unique constraint — el "primer error" más común detrás de una oleada de 25P02.