Error de PostgreSQL: null value violates not-null constraint

ERROR:  null value in column "email" of relation "users" violates not-null constraint
DETAIL:  Failing row contains (42, null, Alice, 2026-07-09 10:12:00).

La escritura habría dejado vacía una columna NOT NULL, así que PostgreSQL la rechazó. La línea DETAIL muestra la fila fallida completa, con los valores en el orden de columnas de la tabla — alinéala con la salida de \d y podrás ver exactamente qué llegó.

Qué significa este error

Un mecanismo aquí sorprende a casi todo el mundo en algún momento: los valores por defecto de columna aplican solo cuando la columna se omite del INSERT (o se le da explícitamente la palabra clave DEFAULT). Un INSERT que lista la columna y pasa NULL significa NULL — el default no entra en juego. Los ORM que serializan cada campo mapeado, enviando null para los no establecidos, deshabilitan silenciosamente tus valores por defecto de la base de datos de esta manera.

Causas comunes

Cómo diagnosticarlo

\d users   -- qué columnas son NOT NULL, cuáles tienen un DEFAULT

Mapea la fila del DETAIL sobre la lista de columnas para identificar el campo infractor, luego encuentra quién produjo el NULL: el payload de la aplicación, la serialización del ORM, o el archivo de entrada. Registrar el SQL real que envía la app zanja rápido las conversaciones de "¡pero pusimos un default!".

Cómo solucionarlo

🔍 Recuerda: este error aborta la transacción — mira current transaction is aborted si estás capturando y continuando.