Postgresql-无法删除数据库,因为某些数据库自动连接

每当我尝试删除数据库时,我都会得到:

错误:其他用户正在访问数据库“pilot”
详细信息:还有1个会话正在使用数据库。

当我使用:

选择pg\u终止\u后端(pg\u stat\u activity.pid)
来自pg_统计_活动
其中pg_stat_activity.datname='TARGET_DB';

我终止了与该数据库的连接,但如果我尝试在之后删除数据库,不知何故,有人会自动连接到该数据库并给出此错误。你会怎么做?
除了我,没有人使用这个数据库

您可以防止将来的连接:

从公共数据库撤销数据库上的连接;

(可能还有其他用户/角色;请参见psql中的\l+

然后,您可以终止与该数据库的所有连接,但您自己的连接除外:

选择pid,pg\u终止\u后端(pid)
来自pg_统计_活动
其中datname=当前_数据库()和pid&lt&燃气轮机;pg_backend_pid();

在旧版本中,pid被称为procpid,因此您必须处理这个问题

由于您已撤销了CONNECT权限,任何试图自动连接的用户都将无法再进行自动连接

您现在可以删除数据库了

如果在正常操作中使用超级用户连接,这将不起作用,但如果这样做,则需要首先解决该问题


删除数据库后,如果再次创建数据库,可以执行以下命令来恢复访问

向公众授予数据库thedb上的连接;

发表评论