我一直在使用python3和psycopg2访问postgreSQL数据库。
我遇到一个错误,暗示我打开了连接。当我运行SELECT * FROM pg_stat_activity
时,我的用户名下出现了一堆连接。它们都处于“空闲”状态,其中许多都显示我从未运行的“查询”值(例如:select 1
,show search_path
)。
我已经看过this如何自动关闭它们。而且,我还读到使用pg_terminate_backend
是危险的,并将导致数据库重新启动。如何使用python3或SQL自然地关闭这些连接?它是一个公司生产数据库,因此重新启动它或作为管理员不是一个选项。如果我必须是管理员来解决这个问题,请告诉我。
答案 0 :(得分:2)
您可以使用pg_terminate_backend(pid int).
安全地终止自己的空闲后端流程如果您尝试终止您无法访问的流程,您将收到错误消息,并且不会发生任何特殊情况。不要试图终止活动进程。
pg_terminate_backend(pid int)
终止后端。如果调用角色是终止后端的角色的成员或者已授予调用角色pg_signal_backend,则也允许这样做,但只有超级用户才能终止超级用户后端。