ERRO: o banco de dados "dbname" não existe

19

De acordo com a documentação, desde que não esteja conectado a um banco de dados, posso excluir um banco de dados no console usando:

DROP DATABASE dbname;

Ou posso soltá-lo usando a ferramenta wrapper dropdb.

Ambos me dão um erro dizendo que o banco de dados não existe, mas quando no console e digitando o comando \l, recebo uma lista de bancos de dados, incluindo o que eu quero excluir.

                                          List of databases
           Name            |   Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
---------------------------+-----------+----------+-------------+-------------+-----------------------
 Blog_development          | myusername | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 Blog_test                 | myusername | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

O nome do banco de dados é Blog_development (e o nome abaixo). Eu estava brincando com trilhos e tentando aprender com a documentação online. Eu queria começar de novo e excluir tudo.

Ao tentar excluí-lo, no entanto, ele diz que não existe. Sou novato no PostgreSQL, por isso estou um pouco perdido, nada na documentação sobre esse erro além de aparecer quando ele não existe. Claro que existe, está bem ali.

Sephethus
fonte
2
Por favor, sempre mostrar o texto integral, exacto de quaisquer mensagens de erro, e mostrar a sua versão do PostgreSQL.
Craig Ringer
Verifique a porta em que seu banco de dados está sendo executado. As ferramentas como dropdb, createdb etc serão conectadas por padrão ao 5432. Isso me chamou a atenção quando meu banco de dados estava em execução no 5433. #

Respostas:

26

Seu banco de dados foi criado usando aspas duplas, portanto, seu nome agora diferencia maiúsculas de minúsculas. Portanto, agora você precisa sempre usar aspas duplas ao se referir a ele:

drop database "Blog_test";

Mais detalhes sobre identificadores entre aspas (um nome de banco de dados é um identificador como um nome de coluna ou tabela) podem ser encontrados no manual:
http://www.postgresql.org/docs/current/static/sql-syntaxíquical.html # SQL-SYNTAX-IDENTIFIERS

um cavalo sem nome
fonte
11
minha regra de ouro sempre usa letras minúsculas :( Eu tive o mesmo problema.
Chris Hough