У меня есть сценарий в PostgreSQL, который восстанавливает базу данных тестов из дампа каждую ночь. Доступ к базе данных осуществляется серверами приложений и процессами с пулом соединений, который поддерживает все соединения в любое время.PostgreSQL: временно отключить подключения
Таким образом, сценарий восстанавливает свалку в my_temp_database
. Затем он должен переименовать my_database
в my_old_database
, my_temp_database
в my_database
и, в конце концов, удалить my_old_database
.
Как отключить всех клиентов, суперпользователей или нет, от my_database
, чтобы его можно было переименовать? Как я могу временно предотвратить их повторное подключение?
Есть ли лучший способ сделать то, что мне нужно?
Ха, я хотел бы он работал в 8.3. –
В 8.3 вы можете попробовать 'select pg_terminate_backend (pid) из pg_stat_activity;' –
@araqnid Комманда "update pg_database set datallowconn = false где datname = 'applogs';" работает как шарм! «REVOKE CONNECT ON DATABASE» не работает для меня! UP! UP! UP! UP! UP! UP! –