Грешката гласи, че помощната програма psql не може да намери сокета, за да се свърже с вашия сървър на база данни. Или нямате услугата за база данни, работеща във фонов режим, или сокетът се намира другаде, или може би pg_hba.conf
трябва да се коригира.
Стъпка 1:Проверете дали базата данни работи
Командата може да варира в зависимост от вашата операционна система. Но на повечето *ix системи би работило следното, ще търси postgres сред всички работещи процеси
ps -ef | grep postgres
В моята система, mac osx, това изплюва
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
Последната колона показва командата, използвана за стартиране на сървъра, и опциите.
Можете да разгледате всички налични опции за стартиране на postgres сървъра, като използвате следното.
man postgres
От там ще видите, че опциите -D
и -r
са съответно datadir
&logfilename
.
Стъпка 2:Ако услугата postgres работи
Използвайте find
за търсене на местоположението на сокета, което трябва да е някъде в /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Ако postgres работи и приема връзки на сокета, горното трябва да ви каже местоположението на сокета. На моята машина се оказа:
/tmp/.s.PGSQL.5432
След това опитайте да се свържете чрез psql, като използвате изрично местоположението на този файл, напр.
psql -h /tmp/ dbname
Стъпка 3:Ако услугата работи, но не виждате сокет
Ако не можете да намерите сокета, но видите, че услугата работи, проверете дали файлът pg_hba.conf позволява локални сокети.
Прегледайте до datadir
и трябва да намерите pg_hba.conf
файл.
По подразбиране в долната част на файла трябва да видите следните редове:
# "local" is for Unix domain socket connections only
local all all trust
Ако не го виждате, можете да промените файла и да рестартирате услугата postgres.