如果出现执行sql被锁住的情况,说明有人在对表进行操作,导致没办法在操作同一张表,或是误操作对表进行了操作,可以使用如下sql查出造成锁住的线程,然后再杀线程就可以了
1.PGSQL-查看sql正在运行的进程
SELECT datname,pid,state,query FROM pg_stat_activity where state='active'
SELECT
procpid,
START,
now() - START AS lap,
current_query
FROM
(
SELECT
backendid,
pg_stat_get_backend_pid (S.backendid) AS procpid,
pg_stat_get_backend_activity_start (S.backendid) AS START,
pg_stat_get_backend_activity (S.backendid) AS current_query
FROM
(
SELECT
pg_stat_get_backend_idset () AS backendid
) AS S
) AS S
WHERE
current_query <> '<IDLE>'
ORDER BY
lap DESC;
procpid:进程id
start:进程开始时间
lap:经过时间
current_query:执行中的sql
怎样停止正在执行的sql
SELECT pg_cancel_backend(进程id);
或者用系统函数
kill -9 进程id;