Это приведет к удалению существующих подключений, кроме вашего:
Запрос pg_stat_activity
и получение значений pid, которые вы хотите убить, а затем выдайте им SELECT pg_terminate_backend(pid int)
.
PostgreSQL 9.2 и выше:
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 и ниже:
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();
Как только вы отключите всех, вам придется отключиться и выполнить команду DROP DATABASE из соединения с другой базой данных, а не той, которую вы пытаетесь удалить.
Обратите внимание на переименование столбца procpid
в pid
. См. эту ветку списка рассылки .