PostgreSQL - mudar o nome da base de dados
(Versão 8.3 sobre WindowsXP)
actualizar
a primeira mensagem de erro: Não pode porque eu estava conectado a ele. Então eu selecionei uma outra base de dados e fiz as consultas.
Eu recebo uma segunda mensagem de erro dizendo - me que ele veio user connect. Vejo na tela que ela tem muitos mas eles são inactivo... Não vejo como matá-los.
5 answers
Tente não citar o nome da base de dados:
ALTER DATABASE people RENAME TO customers;
Certifique-se também de que não existem outros clientes ligados à base de dados na altura. Por último, tente postar a mensagem de erro que ele retorna para que possamos obter um pouco mais de informação.
Para referência futura, você deve ser capaz de:
-- disconnect from the database to be renamed
\c postgres
-- force disconnect all other clients from the database to be renamed
SELECT pg_terminate_backend( pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
AND datname = 'name of database';
-- rename the database (it should now have zero clients)
ALTER DATABASE "name of database" RENAME TO "new name of database";
Note que a coluna da tabela pg_stat_activity
pid
foi nomeada como procpid
em versões anteriores a 9.2. Assim, se a sua versão PostgreSQL for inferior a 9.2, use procpid
em vez de pid
.
1) pdAdmin
é uma das sessões. Utilizar psql
em vez disso.
2) Pare os serviços pgBouncer
e/ou scheduler no Windows, uma vez que estes também criam sessões
Thx all.
Em vez de implantar uma bomba nuclear (reiniciar o servidor), deve tentar fechar as ligações que o incomodam, quer descobrindo de onde são e desligando os processos do cliente ou usando o pg_cancel_backend()
função.