目录
问题现象
Navicat 删除 PostgreSQL 数据库时失败,提示:正在被其他用户访问(有session正在连接)如何处理?
如下所示:
bash
ERROR: database 'xXx' is being accessed by other users
DETAIL: There are 5 other sessions using the database.
原因分析
- 可能当前仍有session正在连接数据库,或者有session在不停地连接该数据库,故删除数据库失败。
- 需要查看数据库中的session,检查是否仍有session在连接,如果有,排查连接数据库的机器,停止连接后再删除数据库。
处理方法
1.断开所有连接
sql
SELECT
pg_terminate_backend(pg_stat_activity.pid)
FROM
pg_stat_activity
WHERE
datname='数据库'
AND
pid<>pg_backend_pid();
2. 查找相关连接数据库的主机信息
(如果有程序会不停的连的话只能把连的程序停了才能删除)
sql
SELECT
*
FROM
pg_stat_activity
WHERE
datname='数据库'
3. 再次删除
sql
drop database 数据库;