首页 > 解决方案 > 无法终止 Postgresql DB 上的活动会话

问题描述

我正在尝试使用生产数据刷新我们的一个暂存数据库。我创建了一个名为 pulse_temp 的数据库并从生产中导入数据。在此之后,我执行了以下命令来终止我想要删除的脉冲数据库上的所有活动连接。

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname= 'pulse';
pg_terminate_backend 
----------------------
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
 t
(90 rows)

然后我执行以下命令将当前数据库重命名为随机名称。

ALTER DATABASE pulse RENAME TO pulse_temp1;
ERROR:  database "pulse" is being accessed by other users
DETAIL:  There are 90 other sessions using the database.

即使在终止会话后,我也会收到上述错误。

我什至重新启动了数据库实例,但这个错误似乎仍然存在。

任何想法以及为什么会发生以及解决问题的方法?

标签: postgresqlgoogle-cloud-platformpostgresql-9.6

解决方案


最合理的解释是客户端或客户端池正在立即重新连接。

就在终止会话之前,也许您应该禁用新连接。请参阅PostgreSQL:临时禁用连接以了解如何执行此操作。


推荐阅读