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

Capistrano z PostgreSQL, błąd:dostęp do bazy danych mają inni użytkownicy

W PostgreSQL możesz wydać następującą instrukcję, aby zwrócić pid zaplecza wszystkich otwartych połączeń innych niż to:

SELECT pid FROM pg_stat_activity where pid <> pg_backend_pid();

Następnie możesz wysłać żądanie zakończenia do każdego z tych backendów za pomocą

SELECT pg_terminate_backend($1);

Powiązanie pidów zwróconych z pierwszej instrukcji z każdym pg_terminate_backend exec.

Jeśli inne połączenia nie używają tego samego użytkownika co ty, będziesz musiał połączyć się jako superużytkownik, aby pomyślnie wydać zakończenia.

AKTUALIZACJA:Dołączanie komentarzy i wyrażanie jako zadanie Capistrano:

desc "Force disconnect of open backends and drop database"
task :force_close_and_drop_db do
  dbname = 'your_database_name'
  run "psql -U postgres",
      :data => <<-"PSQL"
         REVOKE CONNECT ON DATABASE #{dbname} FROM public;
         ALTER DATABASE #{dbname} CONNECTION LIMIT 0;
         SELECT pg_terminate_backend(pid)
           FROM pg_stat_activity
           WHERE pid <> pg_backend_pid()
           AND datname='#{dbname}';
         DROP DATABASE #{dbname};
      PSQL
end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zablokuj wiersze do następnego wyboru postgres

  2. jak zrobić podobne wyszukiwanie w postgresql i węźle js

  3. Walidacja zapytania SQL za pomocą PHP

  4. Uruchom plik SQLExec zawierający znaki $$

  5. Zapytanie SQLAlchemy pokazuje błąd Nie można dołączyć do siebie tabeli/wybieralnych przepływów pracy