On Fri, Dec 1, 2017 at 4:39 PM, Job <j...@colliniconsulting.it> wrote:

> Dear guys,
>
> we are using Postgresql 9.6.1 with Rubyrep in order to replicate some
> tables across two different, and remote, database servers.
> Since few weeks sometimes when inserting/updating some rows, the statement
> remains waiting and table seems locked for insert/updates.
>
> When i issue "select * from pg_stat_activity" no query is locked.
> I only obtain this error messages when i kill (i also try directly from
> bash with pgsql) with "ctrl+c" the locked insert:
>
> ERROR:  canceling statement due to user request
> CONTEXT:  while updating tuple (0,7) in relation "TABLE"
> SQL statement "UPDATE TABLE SET FIELD=NOW() WHERE FIELD IS NULL"
> PL/pgSQL function TRIGGER_NAME() line 3 at SQL statement
>
> How can i see what is locking my table/tables?
>
> Thank you!
> F
>


>How can i see what is locking my table/tables?

The attached query will give you all the necessary info.

-- 
*Melvin Davidson*
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.
SELECT l.database AS db_oid, 
             d.datname,
            l.relation, 
           n.nspname,
           c.relname,
           a.pid,
           a.usename,
           l.locktype,
           l. mode, 
           l. granted,
           l.tuple 
  FROM pg_locks l
  JOIN pg_class c ON (c.oid = l.relation)
  JOIN pg_namespace n ON (n.oid = c.relnamespace)
  JOIN pg_database d    ON (d.oid = l.database)
  JOIN pg_stat_activity a ON (a.pid = l.pid) 
ORDER BY database,
         relation, 
         pid;

Reply via email to