- Software y bases de datos
- PostgreSQL
- Base de datos
PostgreSQL 23505: violación de restricción única
Nivel de riesgo
Seguro
Puedes actuar sin peligro siguiendo las comprobaciones seguras.
Urgencia
Media — atiéndelo hoy
Respuesta rápida
SQLSTATE 23505 es unique_violation. Un INSERT o UPDATE intentó crear una combinación de valores que entra en conflicto con una restricción o índice único.
Seguridad primero
Puedes hacerlo con seguridad
- Lee todos los campos del error de base de datos
- Inspecciona la regla de unicidad indicada
- Decide si el duplicado es inválido o esperado
Deja estas tareas a un profesional cualificado
- No intentes esta tarea profesional: Revisar la ruta de escritura y el modelo de concurrencia
Dónde se aplica este código
Un código solo tiene significado dentro del producto y la versión correctos.
Ámbito principal
- Sistema
- Software y bases de datos
- Marca
- PostgreSQL
- Tipo de producto
- Base de datos
Variantes conocidas del código
- PostgreSQL 23505
- SQLSTATE 23505
- unique_violation
Qué significa
Es una infracción de integridad de Clase 23. La solución depende de si el duplicado es un dato inválido una repetición idempotente o un conflicto esperado que necesita una política ON CONFLICT explícita.
Advertencias y condiciones de parada
- Atención altaadvertencia editorial
No borres filas ni elimines una restricción única como solución genérica para 23505. Identifica primero la regla nombrada y el comportamiento de conflicto deseado.
Evidencia: PostgreSQL current error codes appendix · PostgreSQL current INSERT and ON CONFLICT documentation
Síntomas y causas
Causas probables · en orden
- Violación de una restricción únicaConfirmada
PostgreSQL asigna SQLSTATE 23505 a unique_violation dentro de la clase 23 de infracciones de integridad.
Evidencia: PostgreSQL current error codes appendix
- Un INSERT o UPDATE entra en conflicto con una clave existenteFrecuente
La fila propuesta duplica una combinación de claves protegida por una restricción o un índice único.
Evidencia: PostgreSQL current error codes appendix · PostgreSQL current INSERT and ON CONFLICT documentation
- Un conflicto esperado de concurrencia carece de política explícitaPosible
Cuando las escrituras repetidas o simultáneas son válidas puede hacer falta una acción ON CONFLICT deliberada en lugar de un reintento genérico.
Evidencia: PostgreSQL current INSERT and ON CONFLICT documentation
Comprobaciones seguras, paso a paso
- 1
Lee todos los campos del error de base de datos
Requiere herramientas
Captura SQLSTATE 23505 junto con el nombre de la restricción la tabla y el detalle que exponga el controlador. No diagnostiques solo con el número.
Oculta valores de producción y credenciales antes de compartir registros.
Evidencia: PostgreSQL current error codes appendix
- 2
Inspecciona la regla de unicidad indicada
Requiere herramientas
Comprueba qué columnas o expresión protege la restricción o índice nombrado y compara la clave propuesta con la fila existente.
No elimines la regla de unicidad solo para silenciar la excepción.
Evidencia: PostgreSQL current error codes appendix
- 3
Decide si el duplicado es inválido o esperado
Requiere herramientas
Corrige en origen los datos inválidos. Si el conflicto forma parte de una operación idempotente o upsert define con precisión DO NOTHING o DO UPDATE y su objetivo de conflicto.
Un manejador demasiado amplio puede ocultar defectos reales de calidad de datos.
Evidencia: PostgreSQL current INSERT and ON CONFLICT documentation
Técnico virtual
¿Sigue apareciendo 23505 tras comprobarlo?
Responde unas preguntas para acotar la causa probable y la siguiente acción segura. Es una orientación - nunca sustituye a un profesional.
Reservado a un profesional
- Revisar la ruta de escritura y el modelo de concurrenciaverificado
Un especialista de base de datos debe revisar transacciones claves de idempotencia objetivos de conflicto y la regla de negocio protegida cuando 23505 se repite bajo carga.
Por qué: Los 23505 repetidos pueden revelar un problema de diseño de la aplicación y no una avería de PostgreSQL.
Evidencia: PostgreSQL current INSERT and ON CONFLICT documentation
Fuentes y referencias técnicas
- 1
PostgreSQL current error codes appendix
PostgreSQL Global Development Group · 2026 · official_doc
- 2
PostgreSQL current INSERT and ON CONFLICT documentation
PostgreSQL Global Development Group · 2026 · official_doc
¿Te ha resultado útil esta ficha?