Drop a PostgreSQL database если есть активные конекты

для нача­ла киля­ем конекты:

Thank you for reading this post, don't forget to subscribe!

PostgreSQL 9.2 и выше:

 

PostgreSQL 9.1 и ниже:

 

далее мож­но удалять

DROP DATABASE target_db

==================================================================================================

ну или так:

При уда­ле­нии базы появ­ля­ет­ся ошиб­ка о актив­ных пользователях

drop database "SMS_Broadcaster";

ERROR:  database "SMS_Broadcaster" is being accessed by other users

DETAIL:  There are 8 other sessions using the database.

Для нача­ла запре­тим новые соеди­не­ния с базой коман­дой где "SMS_Broadcaster"  – имя базы, postgres – вла­де­лец базы

REVOKE CONNECT ON DATABASE "SMS_Broadcaster" FROM PUBLIC, postgres;

Далее раз­ры­ва­ем все актив­ные соединения

SELECT

pg_terminate_backend(pid)

FROM

pg_stat_activity

WHERE

-- don't kill my own connection!

pid <> pg_backend_pid()

-- don't kill the connections to other databases

AND datname = ' SMS_Broadcaster ' ;

После при­ме­не­ния дан­ной коман­ды, будет пока­за­но сколь­ко поль­зо­ва­те­лей было отключено

Теперь мож­но дро­пать базу

drop database "SMS_Broadcaster";

 

Для вос­ста­нов­ле­ния досту­па к базе, если сно­ва будет созда­на база дан­ных, выпол­ним сле­ду­ю­щую команду

GRANT CONNECT ON DATABASE "SMS_Broadcaster" TO postgres;