Możesz zapobiec przyszłym połączeniom:
REVOKE CONNECT ON DATABASE thedb FROM public;
(i ewentualnie innych użytkowników/role; zobacz \l+
w psql
)
Następnie możesz zakończyć wszystkie połączenia z tą bazą danych oprócz własnego:
SELECT pid, pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = current_database() AND pid <> pg_backend_pid();
W starszych wersjach pid
nazywał się procpid
więc będziesz musiał sobie z tym poradzić.
Ponieważ unieważniłeś CONNECT
praw, cokolwiek próbowało połączyć się automatycznie, nie powinno już być w stanie tego zrobić.
Teraz będziesz mógł usunąć bazę danych.
To nie zadziała, jeśli używasz połączeń superużytkownika do normalnych operacji, ale jeśli to robisz, musisz najpierw naprawić ten problem.
Po zakończeniu usuwania bazy danych, jeśli utworzysz ją ponownie, możesz wykonać poniższe polecenie, aby przywrócić dostęp
GRANT CONNECT ON DATABASE thedb TO public;