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