解决DBeaver角色连接数过多问题:如何删除所有连接?
解决PostgreSQL "too many connections for role dbeaver" 错误
一、修复pg_stat_activity访问权限问题
要终止连接必须能查询pg_stat_activity视图,先解决权限问题:
- 用超级用户登录PostgreSQL,执行授权语句(替换
x为你的用户名):GRANT SELECT ON pg_stat_activity TO x; - 若你本身是超级用户,直接用超级用户会话执行后续终止语句,普通用户默认无法查看所有连接的进程ID。
二、强制终止目标角色的所有连接
使用超级用户会话执行以下SQL(根据PostgreSQL版本选择):
-- PostgreSQL 10及以上版本 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename = 'dbeaver' AND pid != pg_backend_pid(); -- PostgreSQL 10以下旧版本 SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE usename = 'dbeaver' AND procpid != pg_backend_pid();
注:
pid != pg_backend_pid()用于避免终止当前执行这条语句的连接,防止会话中断。
三、清理DBeaver本地连接缓存
- 彻底关闭DBeaver(包括托盘进程,确保完全退出)
- 找到DBeaver的连接缓存目录:
- Windows:
C:\Users\<你的用户名>\AppData\Roaming\DBeaverData\workspace6\.metadata\.plugins\org.jkiss.dbeaver.core\connections - macOS:
~/Library/DBeaverData/workspace6/.metadata/.plugins/org.jkiss.dbeaver.core/connections - Linux:
~/.local/share/DBeaverData/workspace6/.metadata/.plugins/org.jkiss.dbeaver.core/connections
- Windows:
- 删除该目录下的所有文件(这些是历史连接会话的缓存数据)
- 重新启动DBeaver,重新建立数据库连接
四、临时调整最大连接数(应急方案)
当前最大连接数10过小,可临时调整:
-- 临时生效,重启PostgreSQL后失效 ALTER SYSTEM SET max_connections = 30; SELECT pg_reload_conf();
若需永久生效,找到PostgreSQL配置文件postgresql.conf,修改max_connections参数后重启数据库服务。
内容的提问来源于stack exchange,提问作者student
相关产品推荐
相关产品推荐

