小编典典

psql:严重:角色连接过多

sql

我尝试使用以下命令连接到数据库服务器:

psql -h host_ip -d db_name -U user_name --password

它显示以下行,并拒绝连接。

psql: FATAL:  too many connections for role "user_name".

如何关闭活动连接? 我没有数据库的管理员权限。我只是普通用户。


阅读 243

收藏
2021-03-17

共1个答案

小编典典

从集群的任何数据库内部:

陷阱22:您需要首先连接到数据库。也许您可以以其他用户身份连接?(默认情况下,具有该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
2021-03-17