DBAtlas · Atlas d'exploitation des bases de données

55P03: lock_not_available

PostgreSQL

Que signifie cette erreur ?

Le verrou demandé n'a pas pu être acquis immédiatement. Cela se produit généralement lorsqu'un verrou est demandé avec NOWAIT alors qu'un autre le détient, ou lorsque lock_timeout expire.

Cause

Ligne/table verrouillée lors de l'utilisation de SELECT ... FOR UPDATE NOWAIT ou LOCK TABLE ... NOWAIT, ou expiration de lock_timeout. La plupart du temps, une longue transaction détient le verrou.

Comment la corriger

Trouvez la session bloquante : joignez pg_locks et pg_stat_activity (relation en attente/bloquant). Terminez la longue transaction ou, si nécessaire, mettez-y fin avec pg_terminate_backend(pid). Au lieu de NOWAIT, attendez avec un lock_timeout raisonnable et ajoutez une logique de relance. Raccourcissez les transactions pour réduire la durée de détention des verrous.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur