我需要对数据库的独占访问权限。是否可以使用 SQL 命令从 postgres 数据库中“分离”所有其他用户。或者可能关闭所有其他连接,然后获得独占访问权限。
这是用于单元测试的,测试只是手动运行的,所以没有危险。只有旧的死连接会受到影响。
没有其他用户连接到这些 unittest 数据库。
旧的死连接来自发展。当正在编写或失败的测试没有退出干净时,这种情况总是会发生。
如果有人在生产场景中断开连接后还需要将其他用户锁定一段时间,请参阅以下 Scott Marlowe 的回答:https ://dba.stackexchange.com/a/6184/2024
另请参阅 dba 上的类似问题:如何在不停止服务器的情况下断开与特定数据库的所有连接?
您可以尝试以 postgres 用户身份连接到数据库并运行:
更新 一个更好的查询摆脱了子选择:
这里的问题是双重的,首先你需要断开这些用户的连接,其次你需要让他们远离你的服务器。我通常使用 pg_hba.conf 拒绝来自某些机器和/或用户的新连接,而不是撤销连接权限,然后只需执行 pg_ctl -m fast stop;pg_ctl start 删除所有当前连接。懒惰地进行 DDL 更改,这几乎是必要的,否则您将在整个地方陷入僵局。