Answers:
这是我对StackOverflow上非常类似的问题的回答。
根据您的postgresql版本,您可能会遇到一个错误,该错误会pg_stat_activity
导致忽略掉掉的用户的活动连接。这些连接也未在pgAdminIII内部显示。
如果您正在执行自动测试(您还将在其中创建用户),则可能是这种情况。
在这种情况下,您需要还原为以下查询:
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_get_activity(NULL::integer)
WHERE datid=(SELECT oid from pg_database where datname = 'your_database');
这样的查询应该有所帮助(假设数据库名为“ db”):
select pg_terminate_backend(pid) from pg_stat_activity where datname='db';
pid
过去称为procpid
,因此,如果您使用的Postgres版本高于9.2,则可以尝试以下操作:
select pg_terminate_backend(procpid) from pg_stat_activity where datname='db';
但是,您必须是超级用户才能断开其他用户的连接。
它可能也有用REVOKE CONNECT ON DATABASE FROM PUBLIC
或类似,然后再使用GRANT
。