Como posso matar todas as minhas conexões postgresql?
Estou tentando, rake db:drop
mas recebo:
ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
Eu tentei desligar os processos que vejo de um, ps -ef | grep postgres
mas isso também não funciona:
kill: kill 2358 failed: operation not permitted
database
postgresql
DanS
fonte
fonte
Respostas:
Você pode usar pg_terminate_backend () para matar uma conexão. Você precisa ser superusuário para usar esta função. Isso funciona em todos os sistemas operacionais da mesma forma.
Antes de executar esta consulta, você deve REVOGAR os privilégios CONNECT para evitar novas conexões:
fonte
sudo
morrido de qualquer maneira?sudo
no PG.REVOKE
passo. Você salvou alguém, mais uma vez, eu acho!Talvez apenas reinicie
postgres
=>sudo service postgresql restart
fonte
brew services restart postgresql
se vc tem cervejaCom todas as informações sobre o processo em execução:
fonte
MacOS, se o postgresql estiver instalado com o brew :
Fonte: Mate uma sessão / conexão postgresql
fonte
OSX, Postgres 9.2 (instalado com homebrew)
Se o seu datadir estiver em outro lugar, você poderá descobrir onde está examinando a saída de
ps aux | grep postgres
fonte
brew services restart postgresql
pg_ctl restart -D /usr/local/var/postgres
fez o truque! (Eu nem executei o primeiro ou o terceiro comando).Isso parece estar funcionando para o PostgreSQL 9.1:
Levantado das essência encontradas aqui e aqui .
Aqui está uma versão modificada que funciona para o PostgreSQL 9.1 e 9.2.
fonte
Eu uso a seguinte tarefa de rake para substituir o
drop_database
método Rails .lib/database.rake
Edit: Isto é para Postgresql 9.2+
fonte
pg_stat_activity.procpid
vez dopg_stat_activity.pid
Postgres 9.1 e abaixo. Veja stackoverflow.com/a/5408501/444774A maneira mais fácil e atualizada é:
ps -ef | grep postgres
para encontrar a conexão #sudo kill -9 "#"
da conexãoNota: Pode haver PID idêntico. Matar um mata todos.
fonte
Eu tive esse problema e o problema era que o Navicat estava conectado ao meu banco de dados local do Postgres. Depois de desconectar o Navicat, o problema desapareceu.
EDITAR:
Além disso, como último recurso absoluto, você pode fazer backup de seus dados e executar este comando:
... o que matará tudo o que o usuário do postgres está acessando. Evite fazer isso em uma máquina de produção, mas você não deve ter problemas com um ambiente de desenvolvimento. É vital que você garanta que todos os
postgres
processos realmente tenham terminado antes de tentar reiniciar o PostgreSQL depois disso.EDIT 2:
Devido a esta postagem do unix.SE, mudei de
kill -9
parakill -15
.fonte
Eu resolvi desta maneira:
No meu Windows8 de 64 bits, apenas
restart
o serviço: postgresql-x64-9.5fonte
fonte
Só queria salientar que a Resposta de Haris pode não funcionar se algum outro processo em segundo plano estiver usando o banco de dados; no meu caso, foram trabalhos atrasados, eu fiz:
E só então eu fui capaz de soltar / redefinir o banco de dados.
fonte
Saia do postgres e reinicie-o. Simples, mas funciona sempre para mim, onde outros comandos cli às vezes não.
fonte
Não há necessidade de abandoná-lo. Basta excluir e recriar o esquema público. Na maioria dos casos, isso tem exatamente o mesmo efeito.
fonte
Cenário remoto. Mas se você está tentando executar testes em um aplicativo rails e obtém algo como
"ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERRO: o banco de dados" myapp_test "está sendo acessado por outros usuários DETALHE: Há mais 1 sessão usando o banco de dados."
Certifique-se de fechar o pgAdmin ou qualquer outra ferramenta da GUI do postgres antes de executar os testes.
fonte
Caso:
falha ao executar a consulta:
Solução:
a. Exiba a Atividade de Status da consulta da seguinte maneira:
b. Encontre a linha onde a coluna 'Consulta' contém:
c. Na mesma linha, obtenha o valor da coluna 'PID'
d. Execute estes scripts:
fonte
Estou em um mac e uso o postgres via
Postgres.app
. Resolvi esse problema saindo e iniciando novamente o aplicativo.fonte
Abra o PGadmin para ver se há alguma página de consulta aberta, feche toda a página de consulta e desconecte o servidor PostgresSQL e conecte-o novamente e tente a opção excluir / soltar. Isso me ajudou.
fonte
No PG admin, você pode desconectar seu servidor (clique com o botão direito no servidor) e todas as sessões serão desconectadas na reinicialização
fonte
Para mim trabalhou o seguinte:
Estou usando:
gitlab_edition: "gitlab-ce"
gitlab_version: '12 .4.0-ce.0.el7 '
fonte
Primeiro, encontre o Postgres que porta sua execução
ps -ef | grep postgres
seu retornará o número da porta
matar -9
port_number
Por fim, inicie novamente o Postgres
fonte