PostgreSQL强制删除正在被使用的库

928 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天

在PostgreSQL中,如果一个库正在被使用,我们是无法直接去删除的,会收到如下报错:

bill@bill=>drop database db03;
ERROR:  database "db03" is being accessed by other users
DETAIL:  There is 1 other session using the database.

因此,我们需要禁止会话再连接到库中,同时中断掉当前所有连接的会话才可以。

下面是具体的操作方法:

1、设置数据库为禁止连接

UPDATE pg_database 
SET datallowconn = 'false' 
WHERE datname = 'db_name';

2、中断当前库中所有连接会话

SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE datname = 'db_name';

3、删除数据库

drop database db_name;