Jak mogę sprawdzić, czy mój serwer Postgresql działa, czy nie?
Otrzymuję tę wiadomość:
[~/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?
Aktualizacja:
> 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
Aktualizacja 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
źródło
źródło
Odpowiedzi:
Najprostszy sposób sprawdzenia uruchomionych procesów:
I poszukaj polecenia, które wygląda mniej więcej tak (twoja wersja może nie być 8.3):
Aby uruchomić serwer, wykonaj coś takiego:
źródło
pgrep postgres
też działa. Lubps auxwww | grep [p]ostgres
aby zapobiecgrep
podniesieniu się.ps | grep
sugestia dotycząca błędu w sztuce.pgrep
jest do zaakceptowania, ledwo.pg_ctl status
jest super .ps auxwww | grep postgres
będzie pasowaćgrep postgres
, iless /var/log/postgres/whatever
./Library/PostgreSQL/8.3/data
jest arbitralnie tworzony przez użytkownika za pomocąinitdb
polecenia. oto dokument 8.3Możesz uruchomić następujące polecenie, aby określić, czy postgress jest uruchomiony:
Będziesz także chciał ustawić
PGDATA
zmienną środowiskową.Oto, co mam w moim
~/.bashrc
pliku dla postgres:Aby odniosły skutek, pamiętaj, aby je pozyskać w następujący sposób:
Teraz spróbuj i powinieneś otrzymać coś takiego:
źródło
Prawdopodobnie nie zainicjowałeś postgres.
Jeśli zainstalowałeś przy użyciu HomeBrew, init musi zostać uruchomiony, zanim cokolwiek innego stanie się użyteczne.
Aby zobaczyć instrukcje, uruchom
brew info postgres
Gdy to uruchomisz, powinien powiedzieć coś takiego:
Jeśli nadal masz problemy, sprawdź zaporę. Jeśli używasz dobrego, takiego jak HandsOff! i został skonfigurowany do blokowania ruchu, wtedy Twoja strona nie będzie widzieć bazy danych.
źródło
Począwszy od PostgreSQL 9.3, możesz użyć polecenia,
pg_isready
aby określić stan połączenia z serwerem PostgreSQL.Z dokumentów :
źródło
To zależy od tego, gdzie jest zainstalowany twój serwer postgresql. Używasz pg_ctl do ręcznego uruchamiania serwera, jak poniżej.
źródło
pg_ctl status
Komenda sugerowane w innych odpowiedzi, że proces kontroli postmaster istnieje, a jeśli tak, raportów, że to działa. Nie musi to oznaczać, że jest gotowy do przyjmowania połączeń lub wykonywania zapytań.Lepiej jest użyć innej metody, takiej jak użycie
psql
do uruchomienia prostego zapytania i sprawdzenia kodu zakończenia, np.psql -c 'SELECT 1'
Lubpg_isready
do sprawdzenia stanu połączenia .źródło
psql -c "SELECT 1" -d {dbname} > /dev/null || postgres -D /usr/local/var/postgres >postgres.log 2>&1 &
jeśli chcesz sprawdzić i uruchomić postgres za jednym zamachem (przydatne przy skryptach automatyzacji).