2014-06-07 13 views
7

Chcę ustawić domyślny statement_timeout dla mojego dostępu do bazy danych PostgreSQL. Po skonfigurowaniu zmiennych środowiskowych mam teraz to, gdzie psql loguje mnie do mojej preferowanej bazy danych i tabeli. Jednak podczas eksploracji kilku tabel w nim, chciałbym mieć komunikat o upływie około minuty. Można to zrobić po prostu wpisując SET statement_timeout TO '1min'; na początku każdej sesji, ale za każdym razem jest to nieprzyjemne. Nie mam dostępu do konfiguracji serwera i nie chcę go zmieniać. Idealnie mogłabym zrobić coś na efekt alias psql='psql -c "SET statement_timeout TO '1min';"' except the -c` flaga psql nie pozwala na interaktywne wejście. Czy istnieją jakieś dobre rozwiązania tego problemu, czy też zawsze jestem skazany na ręczne ustawienie limitu czasu dla każdej interaktywnej sesji?psql ustaw domyślne statement_timeout jako użytkownika w postgresie

Odpowiedz

12

Można użyć pliku .psqlrc (jeśli nie masz w swoim katalogu domowym, utwórz go, jeśli jesteś na Windows zamiast *nix plik jest % appdata% \ PostgreSQL \ psqlrc.conf zamiast tego) i ustaw następujące polecenie:

set statement_timeout to 60000; commit; 

To ustawienie jest w milisekundach, więc ustawi limit czasu na 1 minutę. .psqlrc nie jest używany z -c ani -X wywołań z psql, więc powinien pozwolić ci uzyskać limit czasu interakcyjnego do 1 minuty.

Następnie można wykonać następujące czynności w psql aby sprawdzić, czy konfiguracja dokonało:

show statement_timeout; 
+0

Nie wiedziałem o .psqlrc! W mojej wersji psql (8.4.5) nie liczy się "ustaw [...]" jako transakcji, więc narzekałem na 'commit' z' psql: ~/.psqlrc: 1: OSTRZEŻENIE: nie ma transakcja w toku ". W przeciwnym razie zadziałało. Dzięki! – Erik

+0

Oczywiście, nie ma problemu. Ach tak, zwinność 8,4.x ... Nadal muszę używać tej wersji czasami i jestem zirytowany tym, czego jeszcze nie ma lub jak zachowuje się inaczej. =) – khampson

+0

Z pewnością nie jest to temat, ale frustracja w wersji 8.4.x była dla mnie katalizatorem konfiguracji tunelu SSH. – Erik