为什么我无法删除PostgreSQL数据库

4

我正试图删除一个Postgres数据库,但总是收到以下错误信息:

还有1个其他会话正在使用这个数据库。

我尝试使用以下命令停止所有会话:

select pg_terminate_backend(pid) from pg_stat_activity where datname='my_database';

这是结果。

pg_terminate_backend
----------------------
(0 rows)

然后我使用了这个命令

DROP DATABASE my_database;

这是完整的错误信息。

ERROR:  database "my_database" is being accessed by other users
DETAIL:  There is 1 other session using the database.

我正在使用PostgreSQL 12。


你是否已连接到你想要删除的数据库? - user330315
是的。我也尝试使用pgadmin删除数据库,但仍然遇到相同的错误。 - Sashaank
2
你需要连接到一个不同的数据库。你不能删除你当前连接的数据库。 - user330315
我该怎么做? - Sashaank
1
与连接到该数据库的方式相同,只需提供不同的数据库名称即可。 - user330315
谢谢。我不知道这个。这个有效。 - Sashaank
1个回答

9
  1. Make sure no users can connect to your database (superuser privileges, superusers still can connect):

    ALTER DATABASE mydb CONNECTION LIMIT 0; 
    
  2. Force disconnection of all clients connected to this database (database owner privileges):

    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = 'mydb';
    
  3. Then use your drop command to delete the Database (database owner privilege):

    DROP DATABASE mydb;
    

你好。你能否更清楚地解释一下第一部分?我对 SQL 还不熟悉。 - Sashaank
第一部分确保除了超级用户之外,没有人可以连接到您的数据库,因此您限制了对DB的连接,这是可选的,但如果您的用户继续使用DB而您不想让他们使用,则可以使用它并限制用户连接到DB。 - Ankit Das
然后,我想你需要使用“ALTER DATABASE mydb CONNECTION LIMIT -1;”取消连接限制。 - Carlitos_30

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接