Verranno eliminate le connessioni esistenti ad eccezione delle tue:
Interroga pg_stat_activity
e ottieni i valori pid che vuoi eliminare, quindi emetti SELECT pg_terminate_backend(pid int)
a loro.
PostgreSQL 9.2 e versioni successive:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();
PostgreSQL 9.1 e precedenti:
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND procpid <> pg_backend_pid();
Una volta disconnessi tutti, dovrai disconnetterti ed emettere il comando DROP DATABASE da una connessione da un altro database, ovvero non quello che stai tentando di eliminare.
Nota la ridenominazione di procpid
colonna a pid
. Vedi questo thread della mailing list.