Sempre que tento descartar o banco de dados, recebo:
ERROR: database "pilot" is being accessed by other users
DETAIL: There is 1 other session using the database.
Quando eu uso:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB';
Eu encerrei a conexão desse banco de dados, mas se eu tentar descartar o banco de dados depois disso, alguém de alguma forma se conectará automaticamente a esse banco de dados e fornecerá esse erro. O que poderia estar fazendo isso? Ninguém usa esse banco de dados, exceto eu.
fonte
GRANT CONNECT ON DATABASE thedb TO public;
Sempre que tento descartar o banco de dados, recebo:
Primeiro você precisa revogar
Então use:
Certamente funcionará.
fonte
Encontrei uma solução para este problema tente executar este comando no terminal
processo de morte por este comando
fonte
Basta verificar qual é a conexão, de onde ela está vindo. Você pode ver tudo isso em:
Talvez seja a sua conexão?
fonte
Isso significa que outro usuário está acessando o banco de dados. Simplesmente reinicie o PostgreSQL. Este comando fará o truque
Em seguida, tente soltar o banco de dados:
Isto irá fazer o truque.
fonte
Solução pgAdmin 4 usando interface do usuário
Primeiro ative a atividade show no painel, se você não tiver:
Agora desative todos os processos usando o db:
Agora deve ser capaz de excluir o banco de dados.
fonte
Se não houver impacto potencial em outros serviços em sua máquina, basta
service postgresql restart
fonte
Solução:
1. Desligue o servidor Pg 2. Ele desconectará todas as conexões ativas 3. Reinicie o servidor Pg 4. Tente seu comando
fonte
Simples assim
fonte
No meu caso, estou usando o AWS Redshift (baseado no Postgres). E parece que não há outras conexões com o banco de dados, mas estou recebendo esse mesmo erro.
No meu caso, parece que o cluster do banco de dados ainda está processando no banco de dados e, embora não haja outras conexões externas / de usuários, o banco de dados ainda está em uso internamente. Encontrei isso executando o seguinte:
Então, meu truque foi escrever um loop no meu código, procurando linhas com o nome do meu banco de dados. (é claro que o loop não é infinito e é um loop sonolento, etc.)
Se houver linhas, prossiga para excluir cada PID, um por um.
Se nenhuma linha for encontrada, prossiga para descartar o banco de dados
Nota: No meu caso, estou escrevendo testes de unidade / sistema Java, onde isso pode ser considerado aceitável. Isso não é aceitável para o código de produção.
Aqui está o hack completo, em Java (ignore minhas classes de teste / utilitário).
fonte
Na minha opinião, existem algumas consultas ociosas em execução no backgroud.
Nota: Matar uma consulta selecionada não causa nenhum impacto ruim
fonte
REVOKE CONNECT
não impedirá as conexões do proprietário ou superusuário do banco de dados. Portanto, se você não deseja que ninguém conecte o banco de dados, o comando follow pode ser útil.Então use:
fonte
Embora eu tenha achado as duas respostas votadas com êxito úteis em outras ocasiões, hoje, a maneira mais simples de resolver o problema era perceber que o PyCharm pode estar mantendo uma sessão aberta e, se eu clicar
Stop
em PyCharm, isso pode ajudar. Com o pgAdmin4 aberto no navegador, eu o fiz e quase imediatamente vi as estatísticas das sessões do Banco de Dados caírem para 0, momento em que consegui soltar o banco de dados.fonte
No macOS, tente reiniciar o banco de dados postgresql através do console usando o comando:
fonte
No terminal, tente este comando:
você verá como:
O terceiro número (3645) é PID.
Você pode excluir este
E depois disso, inicie sua conexão com o PostgreSQL.
Comece manualmente:
fonte