Erreur PostgreSQL : database does not exist
FATAL: database "gianluca" does not exist
Vous vous êtes connecté avec succès au cluster, mais vous avez demandé une base qui n'y est pas. Quand la « base manquante » du message est votre propre nom d'utilisateur, rien n'est cassé : psql prend simplement par défaut le nom de la base égal au nom de l'utilisateur quand vous n'en spécifiez pas.
Ce que signifie cette erreur
Un serveur (cluster) PostgreSQL héberge plusieurs bases ; chaque connexion en cible exactement une. Si le nom demandé n'existe pas sur le cluster que vous avez réellement atteint, vous obtenez ce FATAL. Les deux moitiés de cette phrase provoquent de la confusion :
- Le nom demandé n'est peut-être pas celui que vous croyez — psql et de nombreux outils le prennent par défaut (égal au nom d'utilisateur), et des variables d'environnement comme
PGDATABASEle surchargent silencieusement. - Le cluster que vous avez réellement atteint n'est peut-être pas celui contenant vos données : port 5432 vs 5433, machine hôte vs conteneur Docker, local vs distant.
Causes fréquentes
- psql sans
-d: le nom de la base prend par défaut le nom de l'utilisateur — le classiquedatabase "gianluca" does not exist. - La base n'a pas encore été créée dans cet environnement (installation neuve, nouveau job CI, conteneur recréé sans ses scripts d'init).
- Mauvais cluster : la chaîne de connexion pointe vers un autre port/hôte où cette base n'existe réellement pas.
- Casse ou faute de frappe : les noms de base sont des identifiants — créée entre guillemets en tant que
"AppDb", elle doit être demandée avec cette casse exacte.
Comment la diagnostiquer
# Ce qu'il y a vraiment sur ce cluster :
psql -h HOST -p 5432 -U USER -d postgres -c '\l'
Se connecter à la base de maintenance postgres, toujours présente, et lister ce qui existe répond aux deux questions d'un coup : si vous êtes sur le bon cluster, et comment la base s'appelle réellement.
Comment la corriger
- Nommez la base explicitement :
psql -d appdb, ou corrigez la chaîne de connexion /PGDATABASE. - Créez-la si elle manque réellement :
CREATE DATABASE appdb OWNER app_user; - Mauvais cluster → corrigez hôte/port ; sur les systèmes de la famille Debian
pg_lsclustersliste les clusters locaux et leurs ports.
