Help us understand the problem. What is going on with this article?

PostgreSQL のサーバー側でセッションを切断する方法

More than 5 years have passed since last update.

サーバー側でクエリの実行を中断するには SIGINT を当該プロセス( pspg_stat_activity から探す)に送ります(kill -INT PID)が、これではセッションは切断されません。メンテナンスなどで切断して欲しい場合には pg_terminate_backend(procpid) を使います。

当該の PID がわかっている場合には

SELECT pg_terminate_backend(当該PID);

で切断できます。

特定のDBのセッションをすべて切断するには

9.2
SELECT pg_terminate_backend(procpid)
  FROM pg_stat_activity
 WHERE datname = 'DB名'
   AND procpid <> pg_backend_pid() -- 自分自身を切断しないように
;

PostgreSQL 9.3 からは procpid ではなく pid に変わっているようなので

9.3以降
SELECT pg_terminate_backend(pid)
  FROM pg_stat_activity
 WHERE datname = 'DB名'
   AND pid <> pg_backend_pid();

特定のユーザーなら usename で絞ります。切断後に再接続されたくない場合は pg_hba.conf で reject するようにしておきましょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away