首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PostgreSQL强制客户端断开连接

使用PostgreSQL强制客户端断开连接
EN

Stack Overflow用户
提问于 2009-04-07 19:12:07
回答 6查看 25.6K关注 0票数 32

有没有办法强制客户端断开与PostgreSQL的连接?我正在寻找db2的force application all的等价物。

我想在我的开发机器上这样做,因为当我打开数据库控制台时,我不能加载数据库转储。我得先戒掉它们。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-07 19:21:47

结合pg_terminate_backend函数和pg_stat_activity系统视图。

票数 21
EN

Stack Overflow用户

发布于 2011-05-13 19:05:44

终止PostgreSQL 8.4中的空闲进程:

代码语言:javascript
复制
SELECT procpid, (SELECT pg_terminate_backend(procpid)) as killed from pg_stat_activity
   WHERE current_query LIKE '<IDLE>';
票数 37
EN

Stack Overflow用户

发布于 2014-07-31 23:00:42

This SO answer很好地解释了(完整地引用了araqnid在水平规则之间的话,然后又是我):

要将数据库‘applog’标记为不接受新连接,请执行以下操作:

代码语言:javascript
复制
update pg_database set datallowconn = false where datname = 'applogs';

另一种可能性是撤销客户端角色对数据库的“连接”访问权限。

断开用户与数据库的连接= kill backend。因此,要断开所有其他用户与“applog”数据库的连接,例如:

代码语言:javascript
复制
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();

一旦你完成了这两个步骤,你就是唯一连接到“applog”的用户了。虽然在后端真正完成断开连接之前可能会有延迟?

来自MarkJL的更新:在后端完成断开连接之前确实存在延迟。

现在我又来了:话虽如此,但请记住,procpid列在PostgreSQL 9.2及更高版本中已重命名为pid

我认为这比Milen A.Radev的答案更有帮助,后者虽然在技术上是相同的,但没有提供用法示例和现实生活中的建议。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/727194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档