Błąd informuje, że narzędzie psql nie może znaleźć gniazda do połączenia z serwerem bazy danych. Albo nie masz uruchomionej usługi bazy danych w tle, albo gniazdo znajduje się gdzie indziej, albo może pg_hba.conf
wymaga naprawy.
Krok 1:Sprawdź, czy baza danych działa
Polecenie może się różnić w zależności od systemu operacyjnego. Ale w większości systemów *ix zadziała następujące działanie, będzie wyszukiwać postgres wśród wszystkich uruchomionych procesów
ps -ef | grep postgres
W moim systemie Mac OSX to wypluwa
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
Ostatnia kolumna pokazuje polecenie użyte do uruchomienia serwera i opcje.
Możesz przejrzeć wszystkie dostępne opcje uruchamiania serwera postgres, korzystając z poniższych.
man postgres
Stamtąd zobaczysz, że opcje -D
i -r
to odpowiednio datadir
&logfilename
.
Krok 2:Jeśli usługa Postgres działa
Użyj find
aby wyszukać lokalizację gniazda, które powinno znajdować się gdzieś w /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Jeśli postgres działa i akceptuje połączenia z gniazdem, powyższe powinno wskazać lokalizację gniazda. Na moim komputerze okazało się, że:
/tmp/.s.PGSQL.5432
Następnie spróbuj połączyć się przez psql, używając jawnie lokalizacji tego pliku, np.
psql -h /tmp/ dbname
Krok 3:Jeśli usługa działa, ale nie widzisz gniazda
Jeśli nie możesz znaleźć gniazda, ale widzisz, że usługa jest uruchomiona, sprawdź, czy plik pg_hba.conf zezwala na gniazda lokalne.
Przejdź do datadir
i powinieneś znaleźć pg_hba.conf
plik.
Domyślnie u dołu pliku powinny być widoczne następujące wiersze:
# "local" is for Unix domain socket connections only
local all all trust
Jeśli go nie widzisz, możesz zmodyfikować plik i ponownie uruchomić usługę postgres.