Ich habe vergessen, wie ich PostgreSQL das letzte Mal gestartet habe (es war vor Monaten) und ich erinnere mich nicht, wo sich das Datenverzeichnis befindet. Der postgres
Befehl erfordert anscheinend den Speicherort des Datenverzeichnisses.
Ich bin auf MacOsX, wenn das hilft.
/usr/local/postgres
existiert nicht auf meinem Mac.
Anhand der folgenden Antworten stellte ich fest, dass es hier war:
/usr/local/var/postgres
postgresql
mac-os-x
zufälliger Typ
quelle
quelle
data
ist es/usr/local/var/postgres
Antworten:
Wenn Sie mit Superuser-Zugriff eine Verbindung zur Datenbank herstellen können, dann
ist der kürzeste Weg.
Wenn der Server nicht läuft und Sie vergessen haben, wo sich das Datenverzeichnis befand, müssen Sie sich wirklich selbst raten. Eine betriebssystemspezifische Konvention oder der Shell-Verlauf können Hinweise geben.
quelle
Sie können auch danach fragen
quelle
pg_config
zeigt viele Informationen einschließlich des Datenverzeichnisses:Dies könnte jedoch eine brauspezifische Sache sein; Ohne Gebräu weiß ich nicht, was es zeigt.
quelle
pg_config --configure
nicht derselbe wie derbrew info postgresql
empfohlene (was$(brew --prefix)/var/postgres
ein Symlink zu dem aufgelisteten ist und nicht). Es sieht so aus, als ob die Formel bei der korrekten Verwendung von Konfigurations-Flags ein bisschen nachlässig ist.postgresql-<ver>
apt-Paket installiert , benötigt aber auchpostgresql-server-dev-<ver>
$(brew --prefix postgresql)/homebrew.mxcl.postgresql.plist
wird für den Pfad, der dem folgt-D
(er liegt/usr/local/var/postgres
bei mir).Versuchen Sie unter Ubuntu \ Debian den
pg_lsclusters
Befehl.Auf meiner Maschine:
quelle
Wenn Sie sich nicht anmelden können (z. B. Ihr Passwort vergessen haben), der Dienst jedoch ausgeführt wird, weil MacOS X eine Posix-Variante ist, können Sie jederzeit überprüfen
ps
, ob es als Argument übergeben wird:Auf einer Linux-Box mit zwei Postgres-Instanzen:
quelle
Öffne postgresql.conf, gehe zur Zeile:
ist deine Antwort.
quelle
postgresql.conf
find / -iname "postgresql.conf" 2>/dev/null
herausfindenpostgresql.conf
hat keinedata_directory
definiert. Es wird nur in einem Kommentar erwähnt:#data_directory = 'ConfigDir' # use data in another directory
Moderne Versionen des PostgreSQL-Desktop-Clients für OSX verfügen über ein praktisches Dialogfeld "Servereinstellungen", mit dem Sie das Datenverzeichnis nicht nur auflisten, sondern direkt öffnen können.
Sehr nützlich, wenn ein zufälliger Maschinenabsturz auftritt, der eine Sperrdatei zurücklässt.
quelle
Geben Sie unter OS X 10.8 und 10.9 (nicht 10.10) mit installierter Server-App in einem Terminalfenster Folgendes ein
Unter OS X 10.9 Mavericks ist dies die Ausgabe, die ich davon erhalte, einschließlich des Datenverzeichnisses.
Ich habe dies gerade in Yosemite (OS X 10.10) versucht und postgres wird unter serveradmin nicht mehr als Dienst aufgeführt (obwohl postgres installiert ist).
listet keine Postgres auf
quelle
Unter Windows Server 2012 hat der Befehl
pg_config
das Datenverzeichnis aus verrückten Gründen nicht angezeigt. Aber ich fand es, indem ich mir die Datei ansahC:\Program Files\PostgreSQL\9.4\pg_env.bat
, die diese Zeile enthielt:Das war die Antwort, die ich brauchte.
quelle
Wie wäre es mit dem Standard-Dienstprogramm pg_config wie
pg_config --bindir
One, das auch die Konfigurationsparameter abrufen könnte, mit denen PostgreSQL kompiliert und analysiert wird ?pg_config --configure
quelle
--bindir
Zeigt den Speicherort der ausführbaren Dateien an, nicht das Datenverzeichnis.--configure
ist OK, obwohl man die Ausgabe etwas analysieren muss.Wie bereits erwähnt, kann
ps
der Datenstandort auch wie folgt erfasst werden:ps -e |egrep postgres|egrep -E '[[:blank:]]+\-D'| perl -pe 's/^.*[[:blank:]]+-D[[:blank:]]+(\S+).*?$/$1/'
.Dies würde die meiste Zeit funktionieren. Es würde so etwas zurückgeben wie
/usr/local/pgsql/data
oder wo immer es beim Start in den Parametern von PostgreSQL angegeben wurde.quelle
Basierend auf der Antwort von @Matthew Mark Miller unter macOS 10.14 mit Postgres 11 befindet es sich unter:
quelle
Verallgemeinern aus den 2 Top-Antworten:
So zeigen Sie das Datenverzeichnis direkt in der Befehlszeile an:
So zeigen Sie auch alle anderen definierten Pfade zu Dateien und Verzeichnissen an:
Beispielausgabe:
(Unter Windows ersetzen
LIKE '/%'
mit ,LIKE '%/%'
weil der Pfad mit einem Laufwerksbuchstaben beginnt)quelle