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í.
- Dokumenty signalizačních funkcí správce
- Funkce sledování statistik
- pg_stat_activity zobrazit dokumenty
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