postgresql删除数据库,提示有其它会话正在使用数据库

删除数据库,提示有其它会话正在使用数据库。原因可能有以下两点

(1)服务启动,环境正在使用数据库。或者服务未完全停止,环境仍有进程在使用数据库。

(2)有其他用户正在连接数据库

如果服务处于启动状态,请先停止,再删除数据库。

 

如果确定服务已停止,删除数据库时,仍提示有其它会话正在使用数据库,可以通过以下方法停止其它会话的访问:

1、打开数据库相关工具(如DBeaver),连接目标数据库,并打开sql编辑器

2、运行以下sql命令,查询当前连接的会话:

SELECT

    pid,

    usename AS username,

    client_addr AS client_ip,

    backend_start AS connection_start_time,

    state AS connection_state

FROM

    pg_stat_activity

WHERE

datname = '目标数据库';

  

说明:

  1. pid:会话的进程 ID。

  2. usename:连接用户的用户名。

  3. client_addr:客户端的 IP 地址。

  4. backend_start:连接的开始时间。

  5. state:连接的状态(如 active、idle 等)。

3、在确定不会影响其他用户使用的情况下,可以通过执行以下sql命令,停止第2步中的会话进程:

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '目标数据库' AND pid <> pg_backend_pid();

  

说明:

  1. pg_terminate_backend(pid):终止指定进程 ID 的会话(“pid”替换为需要停止的会话进程ID)

  2. pg_backend_pid():获取当前会话的进程 ID,以避免终止当前会话。

4、除当前会话外,其它会话均停止后,再删除数据库,此时可以成功删除数据库了。

posted @ 2025-08-18 17:25  Sんí丶頭  阅读(51)  评论(0)    收藏  举报