EDB Qué significa un código de error y qué hacer con él

Todos los servicios › memory-service

104207 Al rol de ejecución le falta un permiso sobre una tabla

PERMISO_DE_RUNTIME_AUSENTE

Qué ha pasado

Bajo M-1 la api se conecta con un rol restringido (PG_RUNTIME_ROLE=memory_api) y la fila se filtra por RLS. Cuando una migración crea una tabla y no le concede permisos a ese rol, la operación falla con 42501 — pero el cliente ve un 500 genérico que no dice qué falta, ni a quién llamar, ni si hay algo que hacer mientras tanto.

Cómo se soluciona

Aplicar la migración de GRANT que corresponda y comprobar con el rol de runtime, no con el superusuario: con el superusuario funciona SIEMPRE y por eso no se detecta en pruebas.

Qué hacer mientras tanto

Ninguno desde fuera. Es un despliegue incompleto, no un problema del cliente.

Ya costó tiempo

2026-08: tres endpoints devolvieron {"error":"INTERNAL_ERROR"} en producción durante días. La causa —permisos que le faltaban al rol de runtime, resueltos por las migraciones 206 y 207— no estaba en ninguna parte que pudiera alcanzar quien viera el error. Este es el caso que el ADR-0009 usa como ejemplo, y el número 207 se le asigna por eso.

Dónde se lanza

src/db/pg/index.ts — siEsPermisoDeRuntime, en los DOS caminos de consulta (con y sin contexto de cliente). El mensaje dice qué mirar e incluye la trampa que hace que no se detecte en pruebas: con el superusuario funciona SIEMPRE.

El número viaja en la respuesta o en el registro: sí.

Cómo se lee el código

1
origen: Fortiseg
04
servicio: memory-service
207
error propio del servicio