加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

database – 终止一个postgresql会话/连接

发布时间:2020-12-13 16:56:49 所属栏目:百科 来源:网络整理
导读:如何杀死所有我的postgresql连接? 我试图一个rake db:drop但我得到: ERROR: database "database_name" is being accessed by other usersDETAIL: There are 1 other session(s) using the database. 我试过关闭我从一个ps -ef |看到的进程grep postgres但
如何杀死所有我的postgresql连接?

我试图一个rake db:drop但我得到:

ERROR:  database "database_name" is being accessed by other users
DETAIL:  There are 1 other session(s) using the database.

我试过关闭我从一个ps -ef |看到的进程grep postgres但这不工作:

kill: kill 2358 failed: operation not permitted
您可以使用 pg_terminate_backend()来终止连接。您必须是超级用户才能使用此功能。这在所有操作系统上都是一样的。
SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

在执行此查询之前,您必须具有REVOKE的CONNECT权限才能避免新连接:

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC,username;

If you’re using Postgres 8.4-9.1 use procpid instead of pid

SELECT 
    pg_terminate_backend(procpid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    procpid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读