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

Sas*_*ank 3 sql postgresql drop-database

我正在尝试删除 postgres 数据库。但我总是得到一个

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

错误。

我尝试使用此命令停止所有会话

select pg_terminate_backend(pid) from pg_stat_activity where datname='my_database';
Run Code Online (Sandbox Code Playgroud)

这是结果

pg_terminate_backend
----------------------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

然后我使用了这个命令

DROP DATABASE my_database;
Run Code Online (Sandbox Code Playgroud)

这是整个错误信息

ERROR:  database "my_database" is being accessed by other users
DETAIL:  There is 1 other session using the database.
Run Code Online (Sandbox Code Playgroud)

我正在使用 postgres 12。

Ank*_*Das 6

  1. 确保没有用户可以连接到您的数据库(超级用户权限,超级用户仍然可以连接):

    ALTER DATABASE mydb CONNECTION LIMIT 0; 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 强制断开连接到此数据库的所有客户端(数据库所有者权限):

    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = 'mydb';
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后使用 drop 命令删除数据库(数据库所有者权限):

    DROP DATABASE mydb;
    
    Run Code Online (Sandbox Code Playgroud)