在 PostgreSQL 中删除 DB 时报资源占用

一次性删除数据库中数据最快的方法就是直接 Drop 掉 DB,重新建一个,但是在 Drop 时可能会报占用的错误。

1
There is 1 other session using the database.

出现上诉错误时可以用以下方法解决,方法来自 stackoverflow。

  1. 阻止后续连接

    1
    REVOKE CONNECT ON DATABASE thedb FROM public;
  2. 断开除当前用户外的所有连接

    1
    2
    3
    SELECT pid, pg_terminate_backend(pid) 
    FROM pg_stat_activity
    WHERE datname = current_database() AND pid <> pg_backend_pid();

在老版本中,pidprocpid,如果提示不存在可以替换掉。

CONNECT 权限被回收后,所有自动连接将失效,这时你可以 drop 掉 DB 了。

方法来源:stackoverflow