Как оборвать все соединения в PostgreSQL 9

Автор | 06.12.2016

Записка о том, как оборвать соединения к БД PostgreSQL.

Допустим вы хотите удалить БД, или переименовать, но ей кто то пользуется:

postgres=# alter database test rename to test_1;
ERROR: database «test» is being accessed by other users
DETAIL: There are 4 other sessions using the database.

Или же вы хотите удалить БД:

postgres=# drop database test;
ERROR: database «test» is being accessed by other users
DETAIL: There are 4 other sessions using the database.

Для начала вам потребуется оборвать все активные соединения командой:

select pg_terminate_backend (pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = ‘test’;

Команда выполняется из консоли psql.

После чего вам уже ничего не помешает осуществить задуманное.