我正在尝试删除数据库,但是当我尝试删除数据库时,出现此错误:
错误:其他用户正在访问数据库“ 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个架构,public
和hangfire
,所以我不确定是否是造成此问题的原因。
这是我的本地数据库,没有其他人在使用它。为什么不掉线?
答案 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)
之所以仍然保持一些连接,可能是因为这些用户已被授予对数据库的显式权限。
很可能是数据库的所有者。您必须显式撤消所有者的连接特权。