Я пытаюсь создать сценарий резервного копирования базы данных, и часть потока заключается в том, что мне нужно удалить и затем заново создать базу данных из резервной копии.
Когда есть соединения с базой данных, я получаю сообщение об ошибке, подобное этому:
DETAIL: There are 2 other sessions using the database.
Я искал способ либо проигнорировать это, либо уничтожить соединения перед сбросом базы данных. Я пытаюсь использовать приведенный ниже запрос, но, похоже, он не позволяет мне сбросить базу данных после ее запуска.
-- Drop connections
\set database_name `echo $DB_NAME`
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = ':database_name'
AND pid <> pg_backend_pid();
Я взял запрос из поста SO, который, похоже, предполагал, что его можно использовать, есть ли более надежный способ сделать это или способ принудительно удалить базу данных независимо от того, существуют ли активные соединения?