postgresql数据库不能删除解决方法

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

postgres=#drop database demodb;
ERROR:  database "demodb" is being accessed by other users
DETAIL:  There is 1 other session using the database.

不管是在命令行还是使用工具,我们都无法正常删除相应的数据库,这是postgresql的安全机制,正在使用有进程存在的数据库不能直接删除,出现这种情况建议重新创建一个数据库,把之前的数据备份,然后导入到新的数据库中。
在所有情况都允许的情况下又不得不删除原来的数据库,那么我们可以使用下面的方法来进行操作:
首先我们需要禁止会话再连接到库中,同时中断掉当前所有连接的会话才可以。

登录到数据库中

psql -U 用户名
在postgresql数据库命令行模式下进行操作
postgres=#

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;

注意!

最后提示 :“删库有风险,需谨慎操作!”

你可能感兴趣的:(linux,docker,postgresql,数据库,postgresql,database)