De fout geeft aan dat het psql-hulpprogramma de socket niet kan vinden om verbinding te maken met uw databaseserver. Of je hebt de databaseservice niet op de achtergrond draaien, of de socket bevindt zich ergens anders, of misschien de pg_hba.conf
moet worden gerepareerd.
Stap 1:Controleer of de database actief is
De opdracht kan variëren, afhankelijk van uw besturingssysteem. Maar op de meeste *ix-systemen zou het volgende werken, het zoekt naar postgres tussen alle lopende processen
ps -ef | grep postgres
Op mijn systeem, mac osx, spuugt dit uit
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
De laatste kolom toont de opdracht die is gebruikt om de server te starten, en de opties.
U kunt alle beschikbare opties bekijken om de postgres-server te starten door het volgende te gebruiken.
man postgres
Van daaruit zou je zien dat de opties -D
en -r
zijn respectievelijk de datadir
&de logfilename
.
Stap 2:Als de postgres-service actief is
Gebruik find
om te zoeken naar de locatie van de socket, die ergens in de /tmp
. zou moeten zijn
sudo find /tmp/ -name .s.PGSQL.5432
Als postgres actief is en socketverbindingen accepteert, zou het bovenstaande u de locatie van de socket moeten vertellen. Op mijn machine bleek het te zijn:
/tmp/.s.PGSQL.5432
Probeer dan verbinding te maken via psql met expliciet de locatie van dit bestand, bijv.
psql -h /tmp/ dbname
Stap 3:Als de service actief is, maar je ziet geen socket
Als u de socket niet kunt vinden, maar ziet dat de service actief is, controleer dan of het bestand pg_hba.conf lokale sockets toestaat.
Blader naar de datadir
en je zou de pg_hba.conf
. moeten vinden bestand.
Standaard zou u onderaan het bestand de volgende regels moeten zien:
# "local" is for Unix domain socket connections only
local all all trust
Als u het niet ziet, kunt u het bestand wijzigen en de postgre-service opnieuw starten.