986 Stimmen

Psql: FATAL: Die Datenbank "<user>" existiert nicht

Ich verwende die PostgreSql-App für Mac (http://postgresapp.com/). Ich habe es in der Vergangenheit auf anderen Maschinen verwendet, aber bei der Installation auf meinem Macbook treten einige Probleme auf. Ich habe die Anwendung installiert und ausgeführt:

psql -h localhost

Es gibt zurück:

psql: FATAL: Datenbank "" existiert nicht

Es scheint, dass ich nicht einmal die Konsole ausführen kann, um die Datenbank zu erstellen, die sie zu finden versucht. Das Gleiche passiert, wenn ich einfach ausführe:

psql 

oder wenn ich psql aus dem Anwendungsmenü starte:

Rechnerstatistiken:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Jede Hilfe ist willkommen.

Ich habe auch versucht, PostgreSql über Homebrew zu installieren und habe das gleiche Problem. Ich habe auch die Dokumentationsseite der Anwendung gelesen, die besagt:

Wenn Postgres.app zum ersten Mal gestartet wird, erstellt es die $USER-Datenbank, die die Standarddatenbank für psql ist, wenn keine angegeben ist. Der Standardbenutzer ist $USER, ohne Passwort.

Es scheint also, dass die Anwendung $USER nicht erstellt, jedoch habe ich es jetzt mehrmals installiert->deinstalliert->neu installiert, also muss es etwas mit meinem Rechner zu tun haben.

Ich habe die Antwort gefunden, bin mir aber nicht sicher, wie genau es funktioniert, da der Benutzer, der in diesem Thread geantwortet hat -> Getting Postgresql Running In Mac: Database "postgres" does not exist nicht weitergemacht hat. Ich habe den folgenden Befehl verwendet, um psql zu öffnen:

psql -d template1

Ich lasse diese Frage unbeantwortet, bis jemand eine Erklärung dafür liefern kann, warum dies funktioniert.

1472voto

Kirk Roybal Punkte 17023

Es scheint, dass Ihr Paketmanager nicht in der Lage war, die Datenbank mit dem Namen $user für Sie zu erstellen. Der Grund dafür ist,

psql -d template1

funktioniert für Sie, weil template1 eine von Postgres selbst erstellte Datenbank ist und auf allen Installationen vorhanden ist. Sie können anscheinend auf template1 zugreifen, daher müssen Ihnen von der Datenbank einige Rechte zugewiesen worden sein. Versuchen Sie dies an einer Eingabeaufforderung:

createdb

und prüfen Sie dann, ob Sie sich erneut mit

psql -h localhost

anmelden können. Dadurch wird einfach eine Datenbank für Ihren Benutzer erstellt, was ich denke, wonach Sie suchen. Wenn createdb fehlschlägt, haben Sie nicht genügend Rechte, um Ihre eigene Datenbank zu erstellen, und Sie müssen herausfinden, wie Sie das Homebrew-Paket reparieren können.

321voto

Dhananjay Punkte 3418

Vom Terminal aus führen Sie den Befehl in Ihrem Eingabeaufforderungsfenster aus. (Nicht innerhalb von psql).

createdb 

Versuchen Sie dann erneut, Postgres auszuführen.

249voto

Aneer Geek Punkte 2449

Standardmäßig versucht postgres, eine Verbindung zu einer Datenbank mit demselben Namen wie dein Benutzer herzustellen. Um dieses Standardverhalten zu verhindern, gib einfach Benutzer und Datenbank an:

psql -U Benutzername Datenbankname

84voto

user286539 Punkte 951
  1. Als Standardbenutzer anmelden: sudo -i -u postgres
  2. Neuen Benutzer erstellen: createuser --interactive
  3. Wenn nach dem Rollennamen gefragt wird, geben Sie den Linux-Benutzernamen ein und wählen Sie Ja zur Superuser-Frage.
  4. Immer noch als Benutzer postgres angemeldet, eine Datenbank erstellen: createdb
  5. Bestätigen Sie, dass Fehler behoben sind, indem Sie: psql am Eingabeaufforderung eingeben.
  6. Die Ausgabe sollte psql (x.x.x) Geben Sie "help" für Hilfe ein. anzeigen

58voto

gogasca Punkte 8373

Melden Sie sich mit der Standardvorlage1-Datenbank an:

#psql -d template1
#template1=# \l

  Liste der Datenbanken
   Name    |  Eigentümer  | Kodierung |   Kollation   |    Ctype    |  Zugriffsrechte  
-----------+-------------+----------+-------------+-------------+---------------------
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(3 Zeilen)

Erstellen Sie eine Datenbank mit Ihrer Benutzer-ID:

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE

Beenden Sie und melden Sie sich erneut an

template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Geben Sie "help" für Hilfe ein.

gogasca=# \l
                                Liste der Datenbanken
   Name    |  Eigentümer  | Kodierung |   Kollation   |    Ctype    |  Zugriffsrechte  
-----------+-------------+----------+-------------+-------------+---------------------
 gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(4 Zeilen)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X