"psql: FATAL: too many connections for role"psql: 致命错误:角色有太多的连接。

7 浏览
0 Comments

"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日
0
0 Comments

我对pgAdmin还很陌生,但到目前为止我还没有使用过命令行。我遇到了同样的问题,我发现在我的情况下解决问题最简单的方法是在“仪表板”的“数据库活动”中删除列出的进程。

pgAdmin dashboard

(只需单击PID左侧的X)

这有点繁琐,因为您必须逐个删除每个进程,但这样做应该会释放可用的连接。

希望这对您有用。

0
0 Comments

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

困惑:首先需要连接到数据库。也许您可以作为另一个用户进行连接?(默认情况下,一些连接是为具有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

0