Estou tentando soltar meu banco de dados e criar um novo pela linha de comando.
Efetuo login usando psql -U username
e, em seguida, faço a \connect template1
, seguido de a DROP DATABASE databasename;
.
Eu recebo o erro
nome do banco de dados do banco de dados está sendo acessado por outros usuários
Desliguei o Apache e tentei novamente, mas ainda estou recebendo esse erro. Estou fazendo algo errado?
database
postgresql
iman453
fonte
fonte
dropdb databasename
comando na linha de comando?psql -U <user> -c "drop database protodb"
(sem nome do banco de dados)drop database <dataabase_name>;
Não esqueça a vírgula.Respostas:
Você pode executar o comando dropdb na linha de comando:
Observe que você precisa ser um superusuário ou o proprietário do banco de dados para poder eliminá-lo.
Você também pode verificar a visualização pg_stat_activity para ver que tipo de atividade está ocorrendo atualmente no seu banco de dados, incluindo todos os processos inativos.
fonte
dropuser
comando para remover também o usuário.\l
para ver todos os bancos de dados que você possui.Isso funcionou para mim:
para o postgresql anterior à 9.2, substitua
pid
porprocpid
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
fonte
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
column "procpid" does not exist
instância do amazon RDS postgres 9.6Tente isso. Observe que não há banco de dados especificado - ele apenas roda "no servidor"
Se isso não funcionar, vi um problema com o postgres segurando declarações preparadas órfãs.
Para limpá-los, faça o seguinte:
então, para cada ID que você vê, execute o seguinte:
fonte
Quando diz que os usuários estão conectados, o que a consulta "seleciona * em pg_stat_activity;" dizer? Os outros usuários além de você agora estão conectados? Nesse caso, talvez seja necessário editar seu arquivo pg_hba.conf para rejeitar conexões de outros usuários ou desligar qualquer aplicativo que esteja acessando o banco de dados pg para poder eliminá-lo. Ocasionalmente, tenho esse problema na produção. Defina pg_hba.conf para ter duas linhas como esta:
e diga ao pgsql para recarregar ou reiniciar (por exemplo, sudo /etc/init.d/postgresql reload ou pg_ctl reload) e agora a única maneira de conectar-se à sua máquina é através de soquetes locais. Estou assumindo que você está no Linux. Caso contrário, isso pode precisar ser ajustado para algo diferente de local / ident nessa primeira linha, para algo como host ... yourusername.
Agora você deve ser capaz de:
fonte