55P03: lock_not_available
PostgreSQLQue 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.