错误:其他用户正在访问数据库详细信息:使用该数据库的其他24个会话

时间:2018-11-25 19:39:12

标签: postgresql

我正在尝试删除数据库,但是当我尝试删除数据库时,出现此错误:

  

错误:其他用户正在访问数据库“ mydb”
  详细信息:使用该数据库的其他24个会话。

我只想删除它,以便可以从备份中还原它。基于另一个线程,我尝试了这一点:

REVOKE CONNECT ON DATABASE mydb FROM public;

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'mydb';

这没有用。我仍然收到有会话的错误消息。

数据库中有2个架构,publichangfire,所以我不确定是否是造成此问题的原因。

这是我的本地数据库,没有其他人在使用它。为什么不掉线?

2 个答案:

答案 0 :(得分:1)

解决方案是:

UPDATE pg_database SET datallowconn = 'false' WHERE datname = 'mydb';

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'mydb';

DROP DATABASE mydb;

答案 1 :(得分:1)

之所以仍然保持一些连接,可能是因为这些用户已被授予对数据库的显式权限。

很可能是数据库的所有者。您必须显式撤消所有者的连接特权。