- Software y sistemas
- Base de datos
08003
PostgreSQL 08003 en base de datos: se usó una conexión que ya no existe
Evidencia vinculada a esta decisión
Ver fuente: PostgreSQL 18 Appendix A: Error CodesNivel 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.
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.
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.
Momento en que se cerró la conexión
- 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
Estado de la conexión antes de reutilizarla
- 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
Escrituras que quedaron a medias
- 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
PostgreSQL 18 Appendix A: Error Codes
PostgreSQL Global Development Group · 2026 · official_doc
- 2
PostgreSQL error and notice fields
PostgreSQL Global Development Group · 2026 · official_doc
- 3
PostgreSQL database connection control functions
PostgreSQL Global Development Group · 2026 · official_doc
¿Te ha resultado útil esta ficha?