Pasaporte del errorEB / ID
23505
  • Software y bases de datos
  • PostgreSQL
  • Base de datos

PostgreSQL 23505: violación de restricción única

Verificada con fuentes2 fuentesRevisada 21 ago 2026

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. 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. 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. 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. 1

    PostgreSQL current error codes appendix

    PostgreSQL Global Development Group · 2026 · official_doc

  2. 2

    PostgreSQL current INSERT and ON CONFLICT documentation

    PostgreSQL Global Development Group · 2026 · official_doc

Fuentes: PostgreSQL current error codes appendix · PostgreSQL current INSERT and ON CONFLICT documentationrevisado 2026-08-21 · verificado

¿Te ha resultado útil esta ficha?