Мне нужен эксклюзивный доступ к базе данных. Возможно ли использовать команду SQL для «отсоединения» всех других пользователей от базы данных postgres. Или, может быть, закрыть все другие соединения и затем получить эксклюзивный доступ.
Это для модульного тестирования, и тесты выполняются только вручную, поэтому опасности нет. Будут затронуты только старые мертвые соединения.
Других пользователей, подключающихся к этим базам данных юнит-тестов, нет.
Старые мертвые связи происходят из развития. Это происходит все время, когда тест, который пишется или не проходит, не завершается без ошибок.
Если кому-то также необходимо временно заблокировать других пользователей после их отключения в производственном сценарии, см. Ответ Скотта Марлоу ниже: /dba//a/6184/2024
Смотрите также этот похожий вопрос на dba: Как отбросить все соединения с определенной базой данных, не останавливая сервер?
источник
procpid
был переименован вpid
, так что следите за этим.Проблема здесь двоякая: во-первых, вам нужно отключить этих пользователей, а во-вторых, вы должны держать их подальше от вашего сервера. Вместо отмены разрешений на подключение я обычно использую pg_hba.conf для отказа в новых подключениях от определенных машин и / или пользователей, а затем просто делаю быструю остановку pg_ctl -m; pg_ctl начинает сбрасывать все текущие подключения. С slony, делающим изменения DDL, это в значительной степени необходимо, или вы будете получать тупики повсюду.
источник