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: /tmpjeśli prawdziwa ścieżka gniazda to/tmp(samokompilujący się serwer, spakowany klient) -
lub
host: /var/run/postgresqljeś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.