BŁĄD: baza danych „dbname” nie istnieje

19

Zgodnie z dokumentacją, dopóki nie jestem podłączony do bazy danych, mogę usunąć bazę danych w konsoli, używając:

DROP DATABASE dbname;

Lub mogę upuścić go za pomocą narzędzia do pakowania dropdb.

Oba dają mi błąd informujący, że baza danych nie istnieje, ale kiedy w konsoli i wpisując polecenie \l, otrzymuję listę baz danych, w tym tę, którą chcę usunąć.

                                          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 | 

Nazwa bazy danych to Blog_development (i ta poniżej). Bawiłem się szynami i próbowałem uczyć się z dokumentacji online. Chciałem zacząć wszystko od nowa i usunąć wszystko.

Jednak próbując go usunąć, mówi, że nie istnieje. Jestem zupełnie nowy w PostgreSQL, więc jestem trochę zagubiony, nic w dokumentacji o tym błędzie poza tym, że pojawia się, gdy nie istnieje. Oczywiście, że istnieje, jest tam.

Sephethus
źródło
2
Proszę zawsze pokazać pełny, dokładny tekst wszelkich komunikatów o błędach i pokazać wersję PostgreSQL.
Craig Ringer
Sprawdź port, na którym działa baza danych. Narzędzia takie jak dropdb, Createdb itp. Będą domyślnie łączyć się z 5432. To mnie przyłapało, kiedy moja baza danych faktycznie działała na 5433.

Odpowiedzi:

26

Twoja baza danych została utworzona przy użyciu podwójnych cudzysłowów, więc w jej nazwie rozróżniana jest teraz wielkość liter. Dlatego musisz teraz zawsze używać podwójnych cudzysłowów w odniesieniu do tego:

drop database "Blog_test";

Więcej szczegółów na temat cytowanych identyfikatorów (nazwa bazy danych jest identyczna jak nazwa kolumny lub tabeli) można znaleźć w instrukcji:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html # SQL-SYNTAX-IDENTIFIERS

koń bez imienia
źródło
1
moją ogólną zasadą zawsze używaj małych liter :( Miałem ten sam problem.
Chris Hough,