sql >> Databáze >  >> RDS >> PostgreSQL

Capistrano s PostgreSQL, chyba:k databázi přistupují jiní uživatelé

S PostgreSQL můžete vydat následující příkaz pro vrácení backendových pid všech otevřených připojení kromě tohoto:

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

Poté můžete každému z těchto backendů odeslat žádost o ukončení pomocí

SELECT pg_terminate_backend($1);

Svázání pid vrácených z prvního příkazu s každým exec pg_terminate_backend.

Pokud ostatní připojení nepoužívají stejného uživatele jako vy, budete se muset připojit jako superuživatel, abyste úspěšně vydali ukončení.

AKTUALIZACE:Začlenění komentářů a vyjádření jako úkol 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. Jak používat matematické rovnice jako filtry v SQLAlchemy

  2. Node.js vrací výsledek z dotazu MySQL

  3. Kde jsou umístěny soubory databáze MySQL pro WAMP?

  4. Mít problém vázat parametry na příkaz PDO