"psql: FATAL: too many connections for role"psql: 致命错误:角色有太多的连接。
"psql: FATAL: too many connections for role"psql: 致命错误:角色有太多的连接。
我尝试使用以下命令连接数据库服务器:
psql -h host_ip -d db_name -U user_name --password
它显示以下行并拒绝连接。
psql: FATAL: too many connections for role "user_name".
如何关闭活动连接?
我没有数据库的管理员权限,只是一个普通用户。
admin 更改状态以发布 2023年5月20日
从集群中的任何数据库内部:
困惑:首先需要连接到数据库。也许您可以作为另一个用户进行连接?(默认情况下,一些连接是为具有superuser_reserved_connections
设置的超级用户保留的。)
为此用户获取每个连接的详细信息:
SELECT * FROM pg_stat_activity WHERE usename = 'user_name';
作为相同的用户或超级用户,您可以取消用户的所有其他连接:
SELECT pg_cancel_backend(pid) -- (SIGINT) -- pg_terminate_backend(pid) -- the less patient alternative (SIGTERM) FROM pg_stat_activity WHERE usename = 'user_name' AND pid <> pg_backend_pid();
最好确保这样做是可以接受的。您不想以这种方式终止重要的查询(或连接)。
在手册中查看pg_cancel_backend()
和pg_terminate_backend()
。
从Linux shell:
你自己启动了那些其他连接吗?也许是您的某个挂起脚本?如果您确定可以这样做,应该可以杀掉它们。
您可以用ps
调查哪些进程可能存在问题:
ps -aux ps -aux | grep psql
如果您确定要终止进程(最好确定,您不想杀死服务器):
kill 123457689 # pid of process here.
或使用SIGKILL
而不是SIGTERM
:
kill -9 123457689