PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment libérer d'éventuels verrous de ligne Postgres ?

Il est possible de voir les serrures.

Voici une vue pour le rendre un peu plus facile que d'utiliser directement pg_locks :

CREATE OR REPLACE VIEW public.active_locks AS 
 SELECT t.schemaname,
    t.relname,
    l.locktype,
    l.page,
    l.virtualtransaction,
    l.pid,
    l.mode,
    l.granted
   FROM pg_locks l
   JOIN pg_stat_all_tables t ON l.relation = t.relid
  WHERE t.schemaname <> 'pg_toast'::name AND t.schemaname <> 'pg_catalog'::name
  ORDER BY t.schemaname, t.relname;

Ensuite, il vous suffit de sélectionner dans la vue :

SELECT * FROM active_locks;

Et tuez-le avec :

SELECT pg_cancel_backend('%pid%');

Autres solutions :http://wiki.postgresql.org/wiki/Lock_Monitoring