Wie kann ich feststellen, ob mein Postgresql-Server ausgeführt wird oder nicht?
Ich erhalte folgende Nachricht:
[~/dev/working/sw] sudo bundle exec rake db:migrate
rake aborted!
could not connect to server: Connection refused
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
Aktualisieren:
> which postgres
/usr/local/bin/postgres
> pg_ctl -D /usr/local/bin/postgres -l /usr/local/bin/postgres/server.log start
pg_ctl: could not open PID file "/usr/local/bin/postgres/postmaster.pid": Not a directory
Update 2:
>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
macos
postgresql
Ramy
quelle
quelle
Antworten:
Der einfachste Weg, um laufende Prozesse zu überprüfen:
Suchen Sie nach einem Befehl, der ungefähr so aussieht (Ihre Version ist möglicherweise nicht 8.3):
Führen Sie Folgendes aus, um den Server zu starten:
quelle
pgrep postgres
funktioniert auch. Oder umps auxwww | grep [p]ostgres
zu verhindern, dass diegrep
abgeholt werden.ps | grep
Vorschlag für ein Fehlverhalten.pgrep
ist kaum akzeptabel.pg_ctl status
ist großartig .ps auxwww | grep postgres
wird passengrep postgres
, undless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
vom Benutzer willkürlich über deninitdb
Befehl erstellt wird. Hier ist die 8.3 docSie können den folgenden Befehl ausführen, um festzustellen, ob postgress ausgeführt wird:
Sie möchten auch die
PGDATA
Umgebungsvariable festlegen .~/.bashrc
Folgendes habe ich in meiner Datei für Postgres:Denken Sie daran, die folgenden Informationen zu verwenden, damit sie wirksam werden:
Probieren Sie es jetzt aus und Sie sollten so etwas bekommen:
quelle
Sie haben wahrscheinlich keine Postgres initiiert.
Wenn Sie mit HomeBrew installiert haben, muss der Init ausgeführt werden, bevor etwas anderes verwendet werden kann.
Führen Sie die Anweisungen aus, um die Anweisungen anzuzeigen
brew info postgres
Sobald Sie das ausgeführt haben, sollte es etwas sagen wie:
Wenn Sie immer noch Probleme haben, überprüfen Sie Ihre Firewall. Wenn Sie eine gute wie HandsOff verwenden! und es wurde konfiguriert, um den Verkehr zu blockieren, dann wird Ihre Seite die Datenbank nicht sehen.
quelle
Ab PostgreSQL 9.3 können Sie mit dem Befehl
pg_isready
den Verbindungsstatus eines PostgreSQL-Servers ermitteln.Aus den Dokumenten :
quelle
Dies hängt davon ab, wo Ihr Postgresql-Server installiert ist. Sie verwenden pg_ctl, um den Server wie unten beschrieben manuell zu starten.
quelle
Der
pg_ctl status
in anderen Antworten vorgeschlagene Befehl überprüft, ob der Postmaster-Prozess vorhanden ist, und meldet in diesem Fall, dass er ausgeführt wird. Das bedeutet nicht unbedingt, dass es bereit ist, Verbindungen anzunehmen oder Abfragen auszuführen.Es ist besser, eine andere Methode
psql
zu verwenden, z. B. eine einfache Abfrage auszuführen und den Exit-Code zu überprüfen , z. B.psql -c 'SELECT 1'
oderpg_isready
den Verbindungsstatus zu überprüfen .quelle
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
Wenn Sie Postgres auf einmal überprüfen und starten möchten (praktisch für Automatisierungsskripte).