Haikson

[ Everything is possible. Everything takes time. ]

Как отстрелить все соединения с БД в postgresql?

Случается, что по какой то причине вам необходимо пересоздать БД в postgresql. Допустим - это БД для тестирования, которая периодически должна зачищаться. Но в момент, когда вы пытаетесь выполнить команду DROP DATABASE... получаете ошибку:

Got an error recreating the test database: database "database_name" is being accessed by other users
DETAIL:  There is 1 other session using the database.

Тогда вам помогут следующие два запроса к postgresql:

select pg_terminate_backend (pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = 'database_name';
drop database database_name;

Все соединения отвалятся и БД удалится.
Удачи и будьте предельно внимательны при удалении данных.