PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql - nie można usunąć bazy danych z powodu niektórych automatycznych połączeń z DB

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć Struts 2 z Hibernate i PostgreSQL?

  2. Jak wypróbować wiele opcji SELECT, aż wynik będzie dostępny?

  3. DatabaseError:bieżąca transakcja została przerwana, polecenia zignorowane do końca bloku transakcji?

  4. Dodawanie klucza obcego do modelu rails

  5. Jak mogę uniemożliwić Postgresowi wstawianie podzapytania?