Potrzebuję wyłącznego dostępu do bazy danych. Czy jest możliwe użycie polecenia SQL do „odłączenia” wszystkich innych użytkowników od bazy danych postgres. A może zamknięcie wszystkich innych połączeń, a następnie uzyskanie wyłącznego dostępu.
Dotyczy to testów jednostkowych, a testy są uruchamiane ręcznie, więc nie ma niebezpieczeństwa. Wpłynie to tylko na stare martwe połączenia.
Nie ma innych użytkowników łączących się z tymi najbardziej nietrafionymi bazami danych.
Stare martwe połączenia pochodzą z rozwoju. Dzieje się tak przez cały czas, gdy test, który jest zapisywany lub nie powiedzie się, nie kończy się jako czysty.
Jeśli ktoś musi również przez pewien czas trzymać zablokowanych innych użytkowników po odłączeniu ich w scenariuszu produkcyjnym, zobacz odpowiedź Scott Marlowe poniżej: /dba//a/6184/2024
Zobacz także podobne pytanie na dba: Jak usunąć wszystkie połączenia z określoną bazą danych bez zatrzymywania serwera?
źródło
procpid
został przemianowany napid
, więc uważaj na to.Problem jest tutaj dwojaki: po pierwsze musisz odłączyć tych użytkowników, a po drugie, trzymać ich z dala od serwera. Zamiast odwoływać perm perms, zwykle używam pg_hba.conf do odrzucania nowych połączeń od niektórych maszyn i / lub użytkowników, a następnie po prostu wykonuję pg_ctl -m szybkie zatrzymanie; pg_ctl zaczyna przerywać wszystkie bieżące połączenia. Przy slony dokonującym zmian w DDL jest to prawie konieczna, bo w przeciwnym razie dostaniesz impas.
źródło