Eu preciso de acesso exclusivo a um banco de dados. É possível usar um comando SQL para "desconectar" todos os outros usuários de um banco de dados postgres. Ou talvez fechando todas as outras conexões e obtendo acesso exclusivo.
Isso é para testes de unidade, e os testes são executados apenas manualmente, portanto não há perigo envolvido. Somente conexões antigas antigas serão afetadas.
Não há outros usuários conectados a esses bancos de dados mais unittest.
As velhas conexões mortas vêm do desenvolvimento. Isso acontece o tempo todo quando um teste que está sendo gravado ou falha não sai limpo.
Se alguém também precisar manter outros usuários bloqueados por um tempo após desconectá-los em um cenário de produção, consulte a resposta de Scott Marlowe abaixo: /dba//a/6184/2024
Veja também esta pergunta semelhante no dba: como descartar todas as conexões em um banco de dados específico sem parar o servidor?
fonte
procpid
foi renomeado parapid
, então cuidado com isso.O problema aqui é duplo: primeiro, você precisa desconectar esses usuários; depois, é necessário mantê-los fora do servidor. Em vez de revogar as permissões de conexão, eu normalmente uso o pg_hba.conf para recusar novas conexões de determinadas máquinas e / ou usuários e, em seguida, basta fazer uma parada rápida pg_ctl -m; o pg_ctl começa a eliminar todas as conexões atuais. Com o slony fazendo alterações no DDL, isso é praticamente uma necessidade ou você terá impasses em todo o lugar.
fonte