Chyba uvádí, že obslužný program psql nemůže najít soket pro připojení k databázovému serveru. Buď nemáte databázovou službu spuštěnou na pozadí, nebo je soket umístěn jinde, nebo možná pg_hba.conf
je třeba opravit.
Krok 1:Ověřte, že databáze běží
Příkaz se může lišit v závislosti na vašem operačním systému. Ale na většině *ix systémů by fungovalo následující, bude to hledat postgres mezi všemi běžícími procesy
ps -ef | grep postgres
Na mém systému, mac osx, to vyplivne
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
Poslední sloupec zobrazuje příkaz použitý ke spuštění serveru a možnosti.
Můžete se podívat na všechny dostupné možnosti pro spuštění postgres serveru pomocí následujícího.
man postgres
Odtud byste viděli, že možnosti -D
a -r
jsou datadir
&logfilename
.
Krok 2:Pokud běží služba postgres
Použijte find
k vyhledání umístění soketu, které by mělo být někde v /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Pokud je spuštěn postgres a přijímá připojení soketu, výše uvedené by vám mělo sdělit umístění soketu. Na mém počítači to dopadlo takto:
/tmp/.s.PGSQL.5432
Poté se zkuste připojit přes psql s použitím explicitního umístění tohoto souboru, např.
psql -h /tmp/ dbname
Krok 3:Pokud služba běží, ale nevidíte soket
Pokud nemůžete najít soket, ale vidíte, že služba běží, ověřte, že soubor pg_hba.conf umožňuje místní sokety.
Přejděte do datadir
a měli byste najít pg_hba.conf
soubor.
Ve výchozím nastavení byste v dolní části souboru měli vidět následující řádky:
# "local" is for Unix domain socket connections only
local all all trust
Pokud jej nevidíte, můžete soubor upravit a restartovat službu postgres.