我需要对数据库的独占访问。是否可以使用 SQL 命令从 postgres 数据库中“分离”所有其他用户。或者可能关闭所有其他连接,然后获得独占访问权限。
这是用于单元测试,并且测试仅手动运行,因此不涉及危险。只有旧的死连接会受到影响。
没有其他用户连接到这些 unittest 数据库。
旧的死联系来自发展。当正在编写或失败的测试没有退出干净时,这种情况总是发生。
如果有人在生产场景中断开其他用户的连接后还需要将其锁定一段时间,请参阅下面 Scott Marlowe 的回答:https : //dba.stackexchange.com/a/6184/2024
另请参阅 dba 上的类似问题:如何在不停止服务器的情况下删除与特定数据库的所有连接?
gsi*_*ems 17
您可以尝试以 postgres 用户身份连接到数据库并运行:
SELECT pg_terminate_backend( procpid )
FROM pg_stat_activity
WHERE procpid <> pg_backend_pid( ) -- 1. don't terminate your own session
AND datname = -- 2. don't terminate connections to
(SELECT datname -- other databases in the cluster
FROM pg_stat_activity
WHERE procpid = pg_backend_pid( )
);
Run Code Online (Sandbox Code Playgroud)
更新 一个更好的查询摆脱了子选择:
SELECT pg_terminate_backend( procpid )
FROM pg_stat_activity
WHERE procpid <> pg_backend_pid( )
AND datname = current_database( );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19537 次 |
最近记录: |