PostgreSQL-Fehler: database does not exist
FATAL: database "gianluca" does not exist
Sie haben sich erfolgreich mit dem Cluster verbunden, aber eine Datenbank angefordert, die es dort nicht gibt. Wenn die "fehlende Datenbank" in der Meldung Ihr eigener Benutzername ist, ist nichts kaputt: psql lässt den Datenbanknamen einfach auf den Benutzernamen zurückfallen, wenn Sie keinen angeben.
Was dieser Fehler bedeutet
Ein PostgreSQL-Server (Cluster) beherbergt mehrere Datenbanken; jede Verbindung zielt auf genau eine. Wenn der angeforderte Name auf dem Cluster, den Sie tatsächlich erreicht haben, nicht existiert, erhalten Sie dieses FATAL. Beide Hälften dieses Satzes stiften Verwirrung:
- Der angeforderte Name ist möglicherweise nicht das, was Sie denken — psql und viele Tools lassen ihn (auf den Benutzernamen) zurückfallen, und Umgebungsvariablen wie
PGDATABASEüberschreiben still. - Der Cluster, den Sie tatsächlich erreicht haben, ist vielleicht nicht der mit Ihren Daten: Port 5432 vs. 5433, Host-Maschine vs. Docker-Container, lokal vs. entfernt.
Häufige Ursachen
- psql ohne
-d: der Datenbankname fällt auf den Benutzernamen zurück — der Klassikerdatabase "gianluca" does not exist. - Die Datenbank wurde in dieser Umgebung noch nicht erstellt (frisches Setup, neuer CI-Job, neu erstellter Container ohne seine Init-Skripte).
- Falscher Cluster: der Connection-String zeigt auf einen anderen Port/Host, wo diese Datenbank wirklich nicht existiert.
- Groß-/Kleinschreibung oder Tippfehler: Datenbanknamen sind Bezeichner — als
"AppDb"gequotet erstellt, muss sie mit genau dieser Schreibweise angefordert werden.
So diagnostizieren Sie ihn
# Was wirklich auf diesem Cluster liegt:
psql -h HOST -p 5432 -U USER -d postgres -c '\l'
Sich mit der immer vorhandenen Wartungsdatenbank postgres zu verbinden und aufzulisten, was existiert, beantwortet beide Fragen auf einmal: ob Sie auf dem richtigen Cluster sind und wie die Datenbank tatsächlich heißt.
So beheben Sie ihn
- Benennen Sie die Datenbank explizit:
psql -d appdb, oder korrigieren Sie den Connection-String /PGDATABASE. - Erstellen Sie sie, wenn sie wirklich fehlt:
CREATE DATABASE appdb OWNER app_user; - Falscher Cluster → korrigieren Sie Host/Port; auf Debian-artigen Systemen listet
pg_lsclustersdie lokalen Cluster und ihre Ports auf.
