Konwencja dla PostgreSQL spakowanego dla Debiana lub pochodnych Debiana, takich jak Ubuntu, to używanie /var/run/postgresql
jako katalog gniazd domeny Unix. Z drugiej strony konwencją dla samodzielnie skompilowanych bibliotek klienta postgres jest użycie /tmp
, chyba że samodzielnie skonfigurowano inaczej.
Tak więc zwykłą główną przyczyną tej niezgodności między obydwoma jest mieszanką samodzielnie skompilowanych elementów po stronie klienta z prekompilowanymi pakietami po stronie serwera (nawet jeśli klient i serwer są zainstalowane na tej samej maszynie, po stronie klienta i po stronie serwera są nadal wyraźny i może nie być zsynchronizowany).
Miękkie linkowanie z /tmp
do tego katalogu zgodnie z sugestią pytającego działa, z wyjątkiem tego, że link zostanie utracony przy każdym ponownym uruchomieniu, ponieważ ogólnie /tmp
jest opróżniany po ponownym uruchomieniu.
Lepszą opcją byłoby dodanie jako wpis w database.yml
:
-
albo
host: /tmp
jeśli prawdziwa ścieżka gniazda to/tmp
(samokompilujący się serwer, spakowany klient) -
lub
host: /var/run/postgresql
jeśli prawdziwa ścieżka gniazda/var/run/postgresql/
(serwer pakietowy, samodzielnie skompilowany klient).
Gdy wartość w polu hosta zaczyna się od znaku ukośnika, biblioteka postgres wie, że jest to lokalizacja katalogu dla gniazd lokalnych, a nie nazwa hosta. Nazwa pliku w katalogu .s.PGSQL.portnumber
jest generowany i nie wolno go określać, tylko katalog.
Inną możliwością jest skonfigurowanie samodzielnie skompilowanych pakietów oprogramowania tak blisko Debiana, jak to tylko możliwe, z pominięciem ustawień domyślnych.