Referencia técnica independienteSitio oficial
  • Software y sistemas
  • Base de datos

08003

PostgreSQL 08003 en base de datos: se usó una conexión que ya no existe

Verificada con fuentes3 fuentesRevisada 3 oct 2026
¿Viene un técnico? Mira los 2 pasos que debe enseñarte
Trace

Evidencia vinculada a esta decisión

Ver fuente: PostgreSQL 18 Appendix A: Error Codes

Nivel de riesgo

Precaución

Actúa con cuidado; puede requerir técnico si persiste.

Urgencia

Media — atiéndelo hoy

Respuesta rápida

La aplicación intentó usar una conexión con PostgreSQL que ya estaba cerrada o perdida. Revisa en qué momento se cerró ese handle y abre una conexión nueva en lugar de reutilizarlo; no repitas una escritura sin saber si llegó a confirmarse.

Seguridad primero

Antes de continuar

  • Un bucle de reintentos sobre la misma conexión muerta no la recupera. Abre una conexión nueva y comprueba primero el resultado de cualquier escritura pendiente.

Puedes hacerlo con seguridad

  • Momento en que se cerró la conexión
  • Estado de la conexión antes de reutilizarla
  • Escrituras que quedaron a medias

Deja estas tareas a un profesional cualificado

  • No intentes esta tarea profesional: Revisar el ciclo de vida de conexiones en el código
  • No intentes esta tarea profesional: Correlacionar con eventos del servidor

Lo que un técnico debe poder justificar

Viene un técnico a casa

Estos son los pasos que tiene que hacer y enseñarte. Márcalos mientras trabaja: si se salta pasos, no aceptes el cambio de pieza.

No son instrucciones para que abras o manipules el equipo. Son las comprobaciones que deben sostener una conclusión técnica.

  1. Revisar el ciclo de vida de conexiones en el código

    Qué haceEl desarrollador localiza dónde se cierra o devuelve la conexión y dónde se vuelve a usar, y lo corrige.

    Te tiene que enseñarla traza que muestra cierre y uso posterior.

    Por escritoel cambio y la prueba que ya no reproduce el fallo.

  2. Correlacionar con eventos del servidor

    Qué haceEl DBA compara la hora con el registro del servidor y con reinicios o cortes de red.

    Te tiene que enseñarlas entradas del registro a esa hora.

    Por escritola conclusión y quién la verificó.

Antes de aceptar una pieza o reparación

Aún no ha demostrado nada. No aceptes un cambio de pieza solo por el código.

Sigue estos pasos

Aviso: Sigue el orden documentado. Un código identifica el sistema afectado, pero por sí solo no demuestra qué pieza está averiada.

  1. Momento en que se cerró la conexión

    Sin herramientas especiales

    Quién:
    tú, como desarrollador.
    Cómo:
    busca en los registros de la aplicación o del pool cuándo se abrió, prestó, devolvió o cerró la conexión que falló.
    Resultado que importa:
    si el cierre ocurrió antes del uso y quién lo hizo.
    Si la aplicación la cerró antes:
    confirma un error de ciclo de vida en el código; ahí está la corrección.
    Si no hay cierre registrado:
    apunta a una pérdida de comunicación; pasa a la comprobación de red y servidor.
    Evidencia a conservar:
    extracto del registro con hora e identificador de la conexión.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL 18 libpq connection status functions

  2. Estado de la conexión antes de reutilizarla

    Sin herramientas especiales

    Quién:
    tú, como desarrollador.
    Cómo:
    en libpq consulta PQstatus antes de reutilizar; en otros drivers, la función equivalente de validación.
    Resultado que importa:
    si devuelve CONNECTION_OK o CONNECTION_BAD.
    Si devuelve CONNECTION_BAD:
    descarta ese objeto y abre otra conexión o usa PQreset, que cierra y reconecta con los mismos parámetros.
    Si devuelve CONNECTION_OK y aun así falla:
    indica que se usa otro objeto distinto del validado; revisa el código.
    Evidencia a conservar:
    versión del driver y estado devuelto.

    Evidencia: PostgreSQL database connection control functions · PostgreSQL 18 libpq connection status functions

  3. Escrituras que quedaron a medias

    Requiere herramientas

    Quién:
    tú, como desarrollador.
    Cómo:
    si la conexión se perdió con una transacción abierta, comprueba en la base si los cambios están o no antes de repetir nada.
    Resultado que importa:
    si la transacción se confirmó.
    Si los cambios no están:
    confirma que el servidor revirtió la transacción al cerrar; puedes repetirla completa.
    Si no puedes saberlo:
    no repitas la escritura a ciegas; usa una clave que impida duplicarla.
    Evidencia a conservar:
    identificador de la operación y resultado de la comprobación.

    Repetir una escritura de pago o pedido sin comprobarla puede duplicarla. Si no tienes acceso de lectura a esa base, detente y pide la comprobación al DBA.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL 18 frontend/backend protocol overview

Situación no resuelta

Si el error persiste, no sigas probando por tu cuenta. Mira qué tiene que hacer y enseñarte el técnico.

Técnico virtual

¿Sigue apareciendo 08003 tras comprobarlo?

Este recorrido usa el código exacto y tus respuestas para elegir una prueba, su resultado esperado y la siguiente bifurcación.

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 sistemas
Marca
PostgreSQL
Tipo de producto
Base de datos

Variantes conocidas del código

  • connection_does_not_exist
  • PostgreSQL 08003
  • SQLSTATE 08003

Qué significa

El apéndice A asigna 08003 a connection_does_not_exist, en la clase 08 de excepciones de conexión. Indica que la operación se lanzó sobre una conexión que el cliente ya no tiene abierta. En libpq una conexión pasa a CONNECTION_BAD si falla la comunicación, y PQreset cierra y reabre con los mismos parámetros. El protocolo indica que, si el servidor cierra la sesión, revierte la transacción abierta. El código no dice quién cerró la conexión: la propia aplicación, un pool, la red o el servidor.

Advertencias y condiciones de parada

  • Precauciónadvertencia editorial

    Un bucle de reintentos sobre la misma conexión muerta no la recupera. Abre una conexión nueva y comprueba primero el resultado de cualquier escritura pendiente.

    Evidencia: PostgreSQL 18 libpq connection status functions · PostgreSQL 18 frontend/backend protocol overview

Síntomas y causas

Causas probables · en orden

  • Conexión cerrada por la propia aplicación o su poolFrecuente

    El código intenta usar un objeto de conexión después de haberlo cerrado o devuelto al pool. Suele repetirse siempre en el mismo punto del código.

    Evidencia: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL 18 libpq connection status functions

  • Conexión perdida antes de usarlaPosible

    La comunicación se cortó mientras la conexión estaba inactiva y el cliente no lo detectó hasta enviar la siguiente orden. Coincide con cortes de red o reinicios del servidor a la misma hora.

    Evidencia: PostgreSQL 18 libpq connection status functions · PostgreSQL 18 frontend/backend protocol overview

Fuentes y referencias técnicas

  1. 1

    PostgreSQL 18 Appendix A: Error Codes

    PostgreSQL Global Development Group · 2026 · official_doc

  2. 2

    PostgreSQL error and notice fields

    PostgreSQL Global Development Group · 2026 · official_doc

  3. 3

    PostgreSQL database connection control functions

    PostgreSQL Global Development Group · 2026 · official_doc

Fuentes: PostgreSQL 18 Appendix A: Error Codes · PostgreSQL error and notice fields · PostgreSQL database connection control functionsrevisado 2026-10-03 · verificado

¿Te ha resultado útil esta ficha?