Zainstalowałem postgresql na OSX. Kiedy uruchamiam psql, otrzymuję
$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5433"?
Jednak z / etc / services
postgresql 5432/udp # PostgreSQL Database
postgresql 5432/tcp # PostgreSQL Database
# Tom Lane <tgl@sss.pgh.pa.us>
pyrrho 5433/tcp # Pyrrho DBMS
pyrrho 5433/udp # Pyrrho DBMS
5433 jest zajęte przez pyrrho, 5432 jest przypisane do str. Mogę się połączyć
psql -p 5432
ale dlaczego psql myśli, że to 5433 i jak domyślnie sprawić, by psql wyglądał we właściwym miejscu?
postgresql
port
psql
wysoka przepustowość
źródło
źródło
PGPORT
jest zdefiniowana: postgresql.org/docs/current/static/libpq-envars.htmlOdpowiedzi:
/etc/services
to tylko wskazówka, jest to lista dobrze znanych portów. Nie oznacza to, że cokolwiek faktycznie działa na tym porcie lub że nazwana usługa będzie działać na tym porcie.W przypadku PostgreSQL typowe jest używanie portu 5432, jeśli jest dostępny. Jeśli tak nie jest, większość instalatorów wybierze następny wolny port, zwykle 5433.
Możesz zobaczyć, co faktycznie działa za pomocą
netstat
narzędzia (dostępne w systemach OS X, Windows i Linux, z różną składnią wiersza poleceń we wszystkich trzech).Jest to dodatkowo skomplikowane w systemach Mac OS X przez okropny bałagan różnych pakietów PostgreSQL - starożytna wersja PostgreSQL firmy Apple wbudowana w system operacyjny, Postgres.app, Homebrew, Macports, instalator EnterpriseDB itp.
Kończy się tak, że użytkownik instaluje Pg i uruchamia serwer z jednego pakietu, ale używa klienta
psql
ilibpq
z innego pakietu. Zwykle dzieje się tak, gdy używają Postgres.app lub homebrew Pg i łączą się z tym,psql
który jest dostarczany z systemem operacyjnym. Nie tylko czasami mają one różne porty domyślne, ale Pg dostarczony z Mac OS X ma inną domyślną ścieżkę gniazda unixowego , więc nawet jeśli serwer działa na tym samym porcie, nie będzie nasłuchiwał tego samego gniazda unix.Większość użytkowników komputerów Mac omija ten problem, używając po prostu tcp / ip z
psql -h localhost
. W razie potrzeby możesz również określić port, nppsql -h localhost -p 5433
. Możesz mieć uruchomionych wiele instancji PostgreSQL, więc upewnij się, że łączysz się z właściwą za pomocąselect version()
iSHOW data_directory;
.Możesz także określić katalog gniazda unixowego; sprawdź
unix_socket_directories
ustawienia instancji PostgreSQL, z którą chcesz się połączyć i określ topsql -h
nppsql -h /tmp
.Czystszym rozwiązaniem jest poprawienie systemu
PATH
tak, abypsql
ilibpq
skojarzony z aktualnie używanym PostgreSQL był tym, co znajduje się jako pierwsze wPATH
. Szczegóły zależą od wersji systemu Mac OS X i zainstalowanych pakietów Pg. Nie używam Maca i nie mogę podać więcej szczegółów po tej stronie, nie spędzając więcej czasu niż jest to obecnie dostępne.źródło
Szybka odpowiedź na OSX, ustaw zmienne środowiskowe.
Lub cokolwiek potrzebujesz.
źródło
Domyślny port Postgres jest zwykle konfigurowany w:
W systemie Ubuntu może to być:
Wyszukaj
port
w tym pliku.źródło
~/PostgreSQL/data/pg96
Dzięki @a_horse_with_no_name „s komentarzu , zmieniłem definicję PGPORT do 5432 w pg_env.sh. To rozwiązało problem. Nie wiem, dlaczego postgres początkowo ustawił go jako 5433, kiedy hostował usługę pod adresem 5432.
źródło
Wydaje się, że jedną z najczęstszych przyczyn takiego stanu rzeczy jest zainstalowanie nowej wersji PostgreSQL bez zatrzymywania usługi istniejącej instalacji. To też był mój szczególny ból głowy. Przed instalacją lub aktualizacją, szczególnie w systemie OS X i korzystaniu z instalatora jednym kliknięciem z Enterprise DB, przed kontynuowaniem sprawdź stan starej instalacji.
źródło
Natknąłem się również na ten problem, skończyło się na tym, że miałem dwa serwery postgres działające w tym samym czasie. Odinstalowałem jeden z nich i zmieniłem port z powrotem na 5432 i teraz działa dobrze.
źródło
Dla mnie w PgAdmin 4 na Mac OS High Sierra , kliknięcie bazy danych PostrgreSQL10 w kolumnie Serwery w lewej kolumnie, a następnie zakładka Właściwości , pokazało port 5433 jako port w obszarze Połączenie . (Nie wiem dlaczego, bo podczas instalacji wybrałem 5432). W każdym razie kliknąłem ikonę Edytuj na karcie Właściwości , zmieniłem ją na 5432 , zapisałem i to rozwiązało problem. Domyśl.
źródło