Dadurch werden bestehende Verbindungen außer Ihrer getrennt:
Fragen Sie pg_stat_activity
ab und erhalten Sie die PID-Werte, die Sie löschen möchten, und geben Sie dann SELECT pg_terminate_backend(pid int)
ein zu ihnen.
PostgreSQL 9.2 und höher:
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 und darunter:
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();
Sobald Sie alle Verbindungen getrennt haben, müssen Sie die Verbindung trennen und den DROP DATABASE-Befehl von einer Verbindung aus einer anderen Datenbank ausführen, die nicht diejenige ist, die Sie trennen möchten.
Beachten Sie die Umbenennung von procpid
Spalte zu pid
. Siehe diesen Mailinglisten-Thread.