ERRORE: il database "dbname" non esiste


19

Secondo la documentazione, fintanto che non sono collegato a un database, posso eliminare un database nella console usando:

DROP DATABASE dbname;

Oppure posso rilasciarlo utilizzando lo strumento wrapper dropdb.

Entrambi mi danno un errore dicendo che il database non esiste, eppure quando nella console e digitando il comando \l, ottengo un elenco di database incluso quello che voglio eliminare.

                                          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 | 

Il nome del database è Blog_development (e quello sotto di esso). Stavo giocando con le rotaie e provando ad imparare dalla documentazione online. Volevo ricominciare ed eliminare tutto.

Quando si tenta di eliminarlo, tuttavia, dice che non esiste. Sono nuovo di zecca su PostgreSQL, quindi sono un po 'perso, nulla nella documentazione su questo errore se non quello che appare quando non esiste. Certo che esiste, è proprio lì.


2
Si prega sempre mostrare il pieno, testo esatto di eventuali messaggi di errore, e mostrare la vostra versione di PostgreSQL.
Craig Ringer,

Controlla la porta su cui è in esecuzione il tuo DB. Gli strumenti come dropdb, Createdb etc si collegheranno automaticamente a 5432. Questo mi ha sorpreso quando il mio DB era effettivamente in esecuzione su 5433.

Risposte:


26

Il tuo database è stato creato con virgolette doppie, quindi il suo nome è sensibile al maiuscolo / minuscolo. Pertanto, ora è necessario utilizzare sempre virgolette doppie quando ci si riferisce ad esso:

drop database "Blog_test";

Maggiori dettagli sugli identificatori tra virgolette (un nome di database è un identificatore proprio come una colonna o un nome di tabella) sono disponibili nel manuale:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html # sintassi SQL-identificatori


1
la mia regola empirica usa sempre lettere minuscole :( Ho avuto lo stesso problema.
Chris Hough,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.