DataSpider開発中で、スクリプト実行途中にトランザクションをコミットする前にエラーが発生したりして、PostgreSQLがロックされることが発生して、解決方法を調べてみました、下記の方法で解決できました。
- SQLで自分のプロセスIDを確認する。
SELECT l.pid, l.locktype, l.mode, c.relname, d.datname
FROM pg_locks l
LEFT JOIN pg_class c ON l.relation = c.relfilenode
LEFT JOIN pg_database d ON l.database = d.oid
ORDER BY l.pid; - SQLでプロセスを終了する
SELECT pg_terminate_backend(手順1で確認したプロセスID)
※pg_cancel_backendは効きませんでしたが、pg_terminate_backendでプロセス終了できました。