有没有办法强制客户端断开与PostgreSQL的连接?我正在寻找db2的force application all的等价物。
我想在我的开发机器上这样做,因为当我打开数据库控制台时,我不能加载数据库转储。我得先戒掉它们。
发布于 2009-04-07 19:21:47
结合pg_terminate_backend函数和pg_stat_activity系统视图。
发布于 2011-05-13 19:05:44
终止PostgreSQL 8.4中的空闲进程:
SELECT procpid, (SELECT pg_terminate_backend(procpid)) as killed from pg_stat_activity
WHERE current_query LIKE '<IDLE>';发布于 2014-07-31 23:00:42
This SO answer很好地解释了(完整地引用了araqnid在水平规则之间的话,然后又是我):
要将数据库‘applog’标记为不接受新连接,请执行以下操作:
update pg_database set datallowconn = false where datname = 'applogs';另一种可能性是撤销客户端角色对数据库的“连接”访问权限。
断开用户与数据库的连接= kill backend。因此,要断开所有其他用户与“applog”数据库的连接,例如:
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的答案更有帮助,后者虽然在技术上是相同的,但没有提供用法示例和现实生活中的建议。
https://stackoverflow.com/questions/727194
复制相似问题