ERROR: database “xxx“ is being accessed by other users DETAIL: There are 31 other sessions

postgres 删库报错

ERROR: database “xxx” is being accessed by other users
DETAIL: There are 31 other sessions using the database.

查询 xxx 当前的 sessions 有哪些

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'xxx'
AND pid <> pg_backend_pid();

# 再次删库
drop database xxx

在执行查询语句之前,有一个或多个后台进程正在使用数据库 xxx,并保持活动状态。当你执行这个查询语句时,它会终止所有正在使用数据库 xxx 的后台进程。这可能包括连接到该数据库的其他客户端应用程序或用户会话。

一旦这些后台进程被终止,就可以删除数据库 xxx 了。这是因为在 PostgreSQL 中,只有当没有任何后台进程使用一个数据库时,才能够将其删除。

需要注意的是,在终止后台进程之前,请确保这样做不会对正在进行的工作造成影响。如果有其他用户正在使用该数据库或应用程序正在执行重要的任务,终止后台进程可能会导致数据丢失或应用程序崩溃。因此,在终止后台进程之前,请务必与相关的用户或管理员进行沟通,并确保它是安全和适当的行动。

你可能感兴趣的:(数据库)