DBAtlas · Atlas de operaciones de bases de datos

55P03: lock_not_available

PostgreSQL

¿Qué significa?

No se pudo adquirir de inmediato el bloqueo solicitado. Suele ocurrir cuando se solicita un bloqueo con NOWAIT mientras otro lo mantiene, o cuando expira lock_timeout.

¿Por qué ocurre?

La fila/tabla está bloqueada al usar SELECT ... FOR UPDATE NOWAIT o LOCK TABLE ... NOWAIT, o expira lock_timeout. La mayoría de las veces, una transacción larga mantiene el bloqueo.

Cómo solucionarlo

Encuentre la sesión bloqueante: combine pg_locks y pg_stat_activity (relación de espera/bloqueo). Finalice la transacción larga o, si es necesario, termínela con pg_terminate_backend(pid). En lugar de NOWAIT, espere con un lock_timeout razonable y añada lógica de reintento. Acorte las transacciones para reducir el tiempo de retención de los bloqueos.

Abrir en DBAtlas →

Más entradas de este motor