有没有办法强制客户端与PostgreSQL断开连接?我在寻找DB2的等价物force application all.
我想在我的开发盒上执行此操作,因为当我打开数据库控制台时,我无法加载数据库转储.我必须先退出他们.
bon*_*iii 36
杀死PostgreSQL 8.4中的空闲进程:
SELECT procpid, (SELECT pg_terminate_backend(procpid)) as killed from pg_stat_activity
WHERE current_query LIKE '<IDLE>';
Run Code Online (Sandbox Code Playgroud)
Mil*_*dev 20
结合pg_terminate_backend功能和pg_stat_activity系统视图.
这个SO答案精美地解释了(完全引用了araqnid之间的横向规则,然后我再次):
将数据库'applogs'标记为不接受新连接:
update pg_database set datallowconn = false where datname = 'applogs';
Run Code Online (Sandbox Code Playgroud)
另一种可能性是撤消数据库中对客户端角色的"连接"访问.
断开用户与database = kill后端的连接.因此,要将所有其他用户与"applogs"数据库断开连接,例如:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
Run Code Online (Sandbox Code Playgroud)
完成这两项操作后,您就是唯一连接到"applogs"的用户.虽然在后端实际完成断开连接之前可能会有延迟?
来自MarkJL的更新:在后端完成断开连接之前确实存在延迟.
现在我再说一遍:请注意,该procpid列已pid在PostgreSQL 9.2及更高版本中重命名.
我认为这比Milen A. Radev的答案更有帮助,Milen A. Radev虽然在技术上是相同的,但没有提供使用示例和现实生活中的建议.
| 归档时间: |
|
| 查看次数: |
23362 次 |
| 最近记录: |