This SO answer đẹp giải thích (full quote từ araqnid giữa các quy tắc ngang, sau đó tôi lại):
T o đánh dấu cơ sở dữ liệu 'applog' khi không chấp nhận kết nối mới:
update pg_database set datallowconn = false where datname = 'applogs';
Một khả năng khác là thu hồi quyền truy cập 'kết nối' trên cơ sở dữ liệu cho (các) vai trò khách hàng.
Ngắt kết nối người dùng khỏi cơ sở dữ liệu = xóa chương trình phụ trợ. Vì vậy, để ngắt kết nối tất cả những người dùng khác từ "applogs" cơ sở dữ liệu, ví dụ:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
Khi bạn đã thực hiện tất cả những người, bạn là người dùng chỉ kết nối với 'applogs'. Mặc dù có thể thực sự có sự chậm trễ trước khi các chương trình phụ trợ thực sự kết thúc ngắt kết nối?
Cập nhật từ MarkJL: Thực sự có sự chậm trễ trước khi chương trình phụ trợ kết thúc ngắt kết nối.
Bây giờ tôi một lần nữa: Điều đó được nói, hãy nhớ rằng cột procpid
đã được đổi tên thành pid
trong PostgreSQL 9.2 trở lên.
Tôi nghĩ rằng điều này hữu ích hơn nhiều so với câu trả lời của Milen A. Radev, trong khi về mặt kỹ thuật giống nhau, không đi kèm với ví dụ sử dụng và đề xuất thực tế.
pg_cancel_backend() không ngắt kết nối, nó chỉ hủy truy vấn hiện tại. Truy vấn tiếp theo có thể đến trong bất kỳ giây nào bằng cách sử dụng cùng một kết nối cũ vẫn còn đó. –
Đã sửa lỗi. Cảm ơn bạn! –