ERREUR: la base de données «dbname» n'existe pas

19

Selon la documentation, tant que je ne suis pas connecté à une base de données, je peux soit supprimer une base de données dans la console en utilisant:

DROP DATABASE dbname;

Ou je peux le déposer en utilisant l'outil wrapper dropdb.

Les deux me donnent une erreur disant que la base de données n'existe pas, mais quand dans la console et en tapant la commande \l, j'obtiens une liste des bases de données, y compris celle que je veux supprimer.

                                          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 | 

Le nom de la base de données est Blog_development (et celui ci-dessous). Je jouais avec des rails et j'essayais d'apprendre de la documentation en ligne. Je voulais tout recommencer et tout supprimer.

Cependant, en essayant de le supprimer, il indique qu'il n'existe pas. Je suis tout nouveau sur PostgreSQL, donc je suis un peu perdu, rien dans la documentation sur cette erreur autre qu'elle n'apparaît lorsqu'elle n'existe pas. Bien sûr que ça existe, c'est juste là.

Sephethus
la source
2
Veuillez toujours afficher le texte complet et exact de tout message d'erreur et montrer votre version de PostgreSQL.
Craig Ringer
Vérifiez le port sur lequel votre base de données s'exécute. Les outils tels que dropdb, createdb etc. se connecteront par défaut à 5432. Cela m'a surpris lorsque ma base de données fonctionnait réellement sur 5433.

Réponses:

26

Votre base de données a été créée à l'aide de guillemets doubles, donc son nom est désormais sensible à la casse. Par conséquent, vous devez désormais toujours utiliser des guillemets doubles lorsque vous vous y référez:

drop database "Blog_test";

Plus de détails sur les identifiants cités (un nom de base de données est un identifiant tout comme un nom de colonne ou de table) peuvent être trouvés dans le manuel:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html # IDENTIFICATEURS SQL-SYNTAX

un cheval sans nom
la source
1
ma règle d'or utilise toujours des minuscules :( J'ai eu ce même problème.
Chris Hough