Korzystam z postgres.heroku.com do hostowania moich baz danych. Oznacza to, że nie mam możliwości zmiany ustawień serwera. Dlatego odpowiedź na to pytanie mi nie pomaga. Heroku nie chce zmieniać swoich ustawień (skontaktowałem się z nimi).
Zastanawiam się, jaki byłby najlepszy sposób zhakowania PgAdmin III, aby utrzymać połączenie przy życiu. Mam na myśli takie rzeczy, jak utworzenie makra Autohotkey, aby zautomatyzować działania interfejsu użytkownika, gdy PgAdmin jest w tle, lub może użyć jakiegoś narzędzia sieciowego, aby wymusić wysyłanie wiadomości sieciowych w imieniu PgAdmins.
Dostałem również ofertę 500 $ na zmianę na kod PgAmin III. Deweloper PgAdmin nie zmodyfikuje kodu, tylko z powodu Heroku.
Co powinienem zrobić? PgAdmin jest lepszy na wiele sposobów, ma tę wadę.
Odpowiedzi:
libpq
, podstawowa biblioteka klienta PostgreSQL, makeepalives
opcję włączenia utrzymywania protokołu TCP .Wygląda na to, że PgAdmin-III nie pozwala bezpośrednio określić dowolnych parametrów połączenia, ale istnieje obejście.
Gdy spojrzysz na konfigurację połączenia w PgAdmin-III, zobaczysz opcję „usługi”. Odnosi się to do pliku usługi połączenia . Aby go użyć, utwórz plik
~/.pg_service.conf
z treściami takimi jak:i podczas łączenia z PgAdmin-III wprowadź
myherokudb
wservice
polu.Spowoduje to, że PgAdmin-III będzie używać parametrów połączenia określonych w pliku usługi, w tym włączania keepalives.
(Jeśli korzystasz z systemu Windows, plik usługi może znajdować się w innej lokalizacji; zobacz dokumentację).
Nie ma zmiennej środowiskowej
libpq
do kontrolowania keepalives, więc nie możesz ustawić tego w ten sposób, będziesz musiał użyć pliku usługi.Dodanie obsługi dodatkowych parametrów połączenia do PgAdmin-III lub pola wyboru w opcjach połączenia w celu kontrolowania parametru keepalives powinno być dość trywialne. Zastanawiam się, czy Dave zrozumiał, o co prosiłeś, o twoją ofertę sfinansowania pracy.
Aktualizacja : plik usługi jest sprawdzany w lokalizacji określonej w
PGSYSCONFDIR
zmiennej środowiskowej. Jeśli nie jest ustawiony, domyślnie jest to lokalizacja specyficzna dla platformy, która nie wydaje się być odpowiednio udokumentowana dla systemu Windows. Prześlę łatkę do dokumentacji. Dokumentacja dla.pgpass
pokazuje jej ścieżkę tak,%APPDATA%\postgresql\pgpass.conf
jakby tak~/.pg_service.conf
było,%APPDATA%\postgresql\pg_service.conf
ale nie wydaje się.Właściwa ścieżka to:
Więc:
Przetestowałem na Windowsie i stwierdziłem, że nie można pozostawić
host
pola w PgAdmin-III pustym w Windows. Wygląda na to, że PgAdmin-III zastępuje dowolny host określony w pliku usługi tym, co określono w oknie dialogowym połączenia. Dlatego nie należy dołączaćhost
klucza do pliku usługi. (Zgłoś błąd).Spraw, aby „ukrywanie rozszerzeń plików dla znanych typów plików” było wyłączone w systemie Windows, aby
.pg_service.conf.txt
zamiast tego nie wywoływać go przypadkowo . Jeśli nie masz pewności, czy ma prawidłową nazwę, sprawdź kolumnę „Typ” w Eksploratorze Windows w widoku listy; będzie czytać „Dokument tekstowy”, jeśli będzie niepoprawnie nazwany.pg_service.conf.txt
iCONF File
poprawnie nazwany.pg_service.conf
. Jeśli masz problemy ze zmianą nazwy, wyłącz „ukryj rozszerzenia plików dla znanych typów plików” lub użyj rozsądnego edytora tekstu, takiego jak notatnik ++, który pozwoli ci tworzyć pliki o dowolnych nazwach.Zanotuj początkowy kropka (kropka) w nazwie pliku. Tak, to jest inne
pgpass.conf
i tak, to irytujące, graniczące z błędem.źródło
host
plik usługi pusty.