Ich verwende die PostgreSql-App für Mac ( http://postgresapp.com/ ). Ich habe es in der Vergangenheit auf anderen Computern verwendet, aber es bereitet mir Probleme bei der Installation auf meinem MacBook. Ich habe die Anwendung installiert und ausgeführt:
psql -h localhost
Es gibt zurück:
psql: FATAL: database "<user>" does not exist
Anscheinend kann ich nicht einmal die Konsole ausführen, um die Datenbank zu erstellen, die gesucht werden soll. Das gleiche passiert, wenn ich gerade renne:
psql
oder wenn ich psql über das Dropdown-Menü der Anwendung starte:
Maschinenstatistik:
OSX 10.8.4
psql (PostgreSQL) 9.2.4
Jede Hilfe wird geschätzt.
Ich habe auch versucht, PostgreSql über Homebrew zu installieren, und ich bekomme das gleiche Problem. Ich habe auch die Anwendungsdokumentationsseite gelesen, auf der es heißt:
Beim ersten Start von Postgres.app wird die $ USER-Datenbank erstellt. Dies ist die Standarddatenbank für psql, wenn keine angegeben ist. Der Standardbenutzer ist $ USER ohne Kennwort.
Es scheint also, dass die Anwendung $ USER nicht erstellt, aber ich habe jetzt mehrmals installiert-> deinstalliert-neu installiert, also muss es etwas mit meinem Computer sein.
Ich habe die Antwort gefunden, bin mir aber nicht sicher, wie sie genau funktioniert, da der Benutzer, der auf diesen Thread geantwortet hat -> Postgresql unter Mac zum Laufen bringen: Die Datenbank "postgres" existiert nicht, nicht nachverfolgt hat . Ich habe den folgenden Befehl verwendet, um psql zum Öffnen zu bringen:
psql -d template1
Ich werde diese unbeantwortet lassen, bis jemand eine Erklärung dafür liefern kann, warum dies funktioniert.
quelle
psql -d postgres -U postgres -h localhost
zeigt? Ohne Flags wird standardmäßig der CLI-Benutzer verwendet, und ich hätte gesagt, dass standardmäßig die Administrator-Datenbank "postgres" verwendet wird, aber ich habe keinen Mac zum Testen.createdb <user>
hat für mich funktioniert.psql -U user -d postgres
, um sicherzustellen, dass der Benutzer mit der bereits vorhandenen Postgres-Datenbank verbunden ist. Wir müssen also die Datenbank auch beim Anmelden übergeben.Antworten:
Es scheint, dass Ihr Paketmanager die Datenbank mit dem Namen $ user nicht für Sie erstellt hat. Der Grund dass
Für Sie funktioniert, dass template1 eine Datenbank ist, die von postgres selbst erstellt wurde und in allen Installationen vorhanden ist. Sie können sich anscheinend bei template1 anmelden, daher müssen Ihnen einige Rechte von der Datenbank zugewiesen worden sein. Versuchen Sie dies an einer Shell-Eingabeaufforderung:
und dann sehen Sie, ob Sie sich erneut mit anmelden können
Dadurch wird einfach eine Datenbank für Ihren Login-Benutzer erstellt, nach der Sie meiner Meinung nach 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.
quelle
$ createdb -h localhost
, um den Fehler zu behebencould not connect to database postgres: could not connect to server
. Danach kann ich mich über mit der postgresql-Konsole verbindenpsql -h localhost
.-d template1
in Ihrem ersten Befehl? Ich habe "template1" in Tutorials im ganzen Internet gesehen, aber es dient nur dazu, mich zu verwirren. Ein logischerer Ansatz wäre meiner Meinung nach 1) Erstellen des PostgreSQL-Benutzers, z. B. "usera" 2) Erstellen einer Datenbank mit demselben Namen wie der Benutzer "usera" (Ich denke, das ist verrückt, aber es scheint, dass PostgreSQL es erfordert) 3) Melden Sie sich bei PostgreSQL als Superuser "postgres" an und weisen Sie dem Benutzer "usera" die Berechtigungen der Datenbank "usera" zu (oh mein Gott, ist das wirklich das wirkliche Leben?)Führen Sie vom Terminal aus den Befehl in Ihrem Eingabeaufforderungsfenster aus. (Nicht innerhalb von psql) .
Und dann versuchen Sie erneut, Postgres auszuführen.
quelle
createdb
Standardmäßig versucht postgres, eine Verbindung zu einer Datenbank mit demselben Namen wie Ihr Benutzer herzustellen. Um dieses Standardverhalten zu verhindern, geben Sie einfach Benutzer und Datenbank an:
quelle
psql -U Username -f create_db.sql
database Username doesn't exists
psql -U Username postgres
wenn Sie noch keine Datenbanken habensudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
an der Eingabeaufforderung Folgendes eingeben.psql (x.x.x) Type "help" for help.
quelle
Melden Sie sich mit der Standarddatenbank template1 an:
Erstellen Sie eine Datenbank mit Ihrer Benutzer-ID:
Beenden Sie und melden Sie sich erneut an
quelle
Beim Versuch, postgresql auf einem Mac zu öffnen, trat der gleiche Fehler auf
Ich habe diesen einfachen Befehl gefunden, um ihn zu lösen:
Methode 1
und Typ
Methode 2:
quelle
Hatte das gleiche Problem, ein einfaches
psql -d postgres
tat es (Geben Sie den Befehl in das Terminal ein)quelle
Dieser Fehler kann auch auftreten, wenn die Umgebungsvariable PGDATABASE auf den Namen einer nicht vorhandenen Datenbank festgelegt ist.
Unter OSX wurde beim Versuch, psql über das Menü Postgress.app zu starten, der folgende Fehler angezeigt:
psql: FATAL: database "otherdb" does not exist
Die Lösung der Fehler war zu entfernen
export PGDATABASE=otherdb
aus~/.bash_profile
:Wenn PGUSER auf einen anderen Wert als Ihren Benutzernamen eingestellt ist, tritt der folgende Fehler auf:
psql: FATAL: role "note" does not exist
Die Lösung ist zu entfernen
export PGUSER=notme
aus~/.bash_profile
.quelle
Nach der Installation von postgres habe ich in meiner Fallversion 12.2 den folgenden Befehl ausgeführt
createdb
.quelle
Da diese Frage die erste in den Suchergebnissen ist, werde ich hier ohnehin eine andere Lösung für ein anderes Problem finden, um keinen doppelten Titel zu haben.
Dieselbe Fehlermeldung kann auftreten, wenn eine Abfragedatei
psql
ohne Angabe einer Datenbank ausgeführt wird. Da esuse
in postgresql keine Anweisung gibt, müssen wir die Datenbank in der Befehlszeile angeben, zum Beispiel:quelle
In der erstellten Dokumentation heißt es:
Wenn also bestimmte OS / postgresql-Distributionen dies anders machen, ist dies sicherlich nicht der Standard / Standard (nur überprüft, dass
initdb
unter openSUSE 13.1 die DB "postgres" erstellt wird, aber nicht "<user>"). Um es kurz zu machen,psql -d postgres
Rede, kurzer Sinn wird voraussichtlich verwendet, wenn ein anderer Benutzer als "postgres" verwendet wird.Offensichtlich
createdb
funktioniert die akzeptierte Antwort, die ausgeführt wird , um eine Datenbank mit dem Namen "Benutzer" zu erstellen, ebenfalls, erstellt jedoch eine überflüssige Datenbank.quelle
hatte das Problem mit der Verwendung des JDBC-Treibers, so dass man nur die Datenbank (möglicherweise redundant, abhängig vom verwendeten Tool) nach dem Hostnamen in der URL hinzufügen muss, z
jdbc:postgres://<host(:port)>/<db-name>
Weitere Details sind hier dokumentiert: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT
quelle
Stellen Sie über den vorhandenen Superuser eine Verbindung zu Postgres her.
Erstellen Sie eine Datenbank mit dem Namen des Benutzers, über den Sie eine Verbindung zu postgres herstellen.
Versuchen Sie nun, eine Verbindung über den Benutzernamen herzustellen
quelle
Versuchen Sie es mit-
psql -d postgres
Ich hatte auch das gleiche Problem, als ich rannte
psql
quelle
Zunächst ist es hilfreich, eine Datenbank mit dem gleichen Namen wie Ihre aktuelle Verwendung zu erstellen, um den Fehler zu vermeiden, wenn Sie nur die Standarddatenbank verwenden und neue Tabellen erstellen möchten, ohne den Namen einer Datenbank explizit zu deklarieren.
Ersetzen Sie "skynotify" durch Ihren Benutzernamen:
-d gibt explizit an, welche Datenbank als Standard für SQL-Anweisungen verwendet werden soll, die während dieser interaktiven Sitzung nicht explizit einen Datenbanknamen enthalten.
GRUNDLAGEN, UM EIN KLARES BILD ZU ERHALTEN, WAS IHR PostgresQL-SERVER enthält.
Sie müssen eine Verbindung zu einer vorhandenen Datenbank herstellen, um psql interaktiv verwenden zu können. Glücklicherweise können Sie psql nach einer Liste von Datenbanken fragen:
.
Dadurch wird die interaktive Konsole NICHT gestartet, sondern nur eine textbasierte Tabelle an das Terminal ausgegeben.
Wie in einer anderen Antwort angegeben, wird postgres immer erstellt. Sie sollten es daher als ausfallsichere Datenbank verwenden, wenn Sie nur möchten, dass die Konsole mit anderen Datenbanken funktioniert. Wenn es nicht vorhanden ist, listen Sie die Datenbanken auf und verwenden Sie eine davon.
Wählen Sie auf ähnliche Weise Tabellen aus einer Datenbank aus:
Meine "postgres" -Datenbank enthält keine Tabellen, aber jede Datenbank, die dies tut, gibt eine textbasierte Tabelle an das Terminal aus (Standardausgang).
Der Vollständigkeit halber können wir auch alle Zeilen aus einer Tabelle auswählen:
.
Selbst wenn keine Zeilen zurückgegeben werden, erhalten Sie die Feldnamen.
Wenn Ihre Tabellen mehr als ein Dutzend Zeilen enthalten oder Sie sich nicht sicher sind, ist es sinnvoller, mit einer Anzahl von Zeilen zu beginnen, um zu verstehen, wie viele Daten sich in Ihrer Datenbank befinden:
.
Und nicht, dass "1 Zeile" Sie verwirrt, es gibt nur an, wie viele Zeilen von der Abfrage zurückgegeben werden, aber die 1 Zeile enthält die gewünschte Anzahl, in diesem Beispiel 0.
HINWEIS: Eine Datenbank, die ohne definierten Eigentümer erstellt wurde, gehört dem aktuellen Benutzer.
quelle
Ich habe einige dieser Lösungen ausprobiert, aber sie haben nicht ganz funktioniert (obwohl sie sehr auf dem richtigen Weg waren!)
Am Ende war mein Fehler:
als ich den folgenden Befehl ausführte:
psql
Also habe ich diese beiden Befehle ausgeführt:
HINWEIS: Dies wird die db zu entfernen, aber ich habe es nicht brauchen und aus irgendeinem Grunde konnte ich keinen Zugriff mehr PQSL, so dass ich entfernt und neu erstellt es. Dann
psql
wieder gearbeitet.quelle
Nicht sicher, ob es bereits in den Antworten hinzugefügt wurde, war Anatolii Stepaniuk Antwort sehr hilfreich, die die folgenden ist.
quelle
Hatte dieses Problem bei der Installation von postgresql über Homebrew.
Musste den Standard "postgres" Superuser erstellen mit:
quelle
Ich hatte nach der Installation von postgresql mit homebrew immer noch das oben genannte Problem. Ich habe es behoben, indem ich / usr / local / bin vor / usr / bin in meinen Pfad eingefügt habe
quelle
In seiner einfachsten Erklärung; Es ist kein Problem. Einfach tippen
wird zu dieser Antwort führen.
wird ohne Fehler erfolgreich sein, wenn der Benutzer die Berechtigung hat, auf die Datenbank zuzugreifen.
Man kann auf die Details der exportierten Umgebungsvariablen eingehen, aber das ist unnötig. Dies ist zu grundlegend, um aus einem anderen Grund fehlzuschlagen.
quelle
pgres