Z wnętrza dowolnej bazy danych klastra:
Catch 22:musisz najpierw połączyć się z bazą danych. Może możesz połączyć się jako inny użytkownik? (Domyślnie niektóre połączenia są zarezerwowane dla superużytkowników z superuser_reserved_connections
ustawienie.)
Aby uzyskać szczegółowe informacje o każdym połączeniu tego użytkownika:
SELECT *
FROM pg_stat_activity
WHERE usename = 'user_name';
Jako ten sam użytkownik lub jako superużytkownik możesz anulować wszystkie (inne) połączenia użytkownika:
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();
Lepiej upewnij się, że to w porządku. Nie chcesz w ten sposób przerywać ważnych zapytań (lub połączeń).
pg_cancel_backend()
i pg_terminate_backend()
w instrukcji.
Z powłoki Linux
Czy sam zacząłeś te inne połączenia? Może twój wiszący scenariusz? Powinieneś być w stanie je zabić (jeśli jesteś pewien, że możesz to zrobić).
Możesz to sprawdzić za pomocą ps
które procesy mogą być winne:
ps -aux
ps -aux | grep psql
Jeśli zidentyfikujesz proces do zabicia (lepiej upewnij się, że nie) chcesz zabić serwer):
kill 123457689 # pid of process here.
Lub za pomocą SIGKILL
zamiast SIGTERM
:
kill -9 123457689