2014-06-07 17 views
7

Bir postgres veritabanına erişimim için bir varsayılan statement_timeout ayarlamak istiyorum. Ortam değişkenlerimi yapılandırdıktan sonra, tercih ettiğim veritabanı ve tabloya şimdi psql'un giriş yapmasını sağladım. Bununla birlikte, birkaç tabloyu incelerken, bir dakika civarında bir zaman aşımına uğramak isterim. Bu, her oturumun başında SET statement_timeout TO '1min'; yazarak yapılabilir, ancak bu her seferinde yazmak için iğrenç. Sunucu yapılandırmasına erişimim yok veya değiştirmek isteyeyim. İdeal olarak, psql'nin alias psql='psql -c "SET statement_timeout TO '1min';"' except the -c` işaretinin etkisine bir şeyler yapabilirdim, etkileşimli girdiye izin vermiyor. Bu soruna hoş bir çözüm var mı yoksa her bir interaktif oturum için zaman aşımını manuel olarak ayarlamaktan her zaman mahrum muyum?psql postgres'te bir kullanıcı olarak default_timeout set

cevap

12

Eğer ev dizininde bir tane var oluşturun etmezseniz (sizin .psqlrc dosyasını kullanabilirsiniz; bunun yerine *nix ait Windows iseniz, dosya % AppData% \ postgresql \ psqlrc.conf olduğunu o 1 dakikaya zaman aşımı oluştururuz, böylece

set statement_timeout to 60000; commit; 

bu ayar milisaniye içinde: yerine) ve aşağıdaki komutu ayarlayın. .psqlrc, -c veya psql çağrıları ile kullanılmaz, böylece etkileşimli mod zaman aşımınızı 1 dakikaya çıkarmanıza izin vermelidir.

Ardından yapılandırma etkisi almıştır doğrulamak için psql aşağıdaki yürütebilirsiniz:

show statement_timeout; 
+0

Ben .psqlrc bilmiyordum! Benim psql (8.4.5) versiyonumda, bir işlem olarak [...] setini saymaz ve 'psql: ~/.psqlrc 'ile' commit 'hakkında şikâyette bulunur: 1: UYARI: işlem devam ediyor. Aksi halde çalıştı. Teşekkürler! – Erik

+0

Elbette, sorun değil. Ah evet, 8.4.x'in çılgınlığı ... Bu versiyonu bazen kullanmam ve hala içinde olmayan ya da nasıl farklı davrandığından rahatsızlık duyuyorum. =) – khampson

+0

Bu kesinlikle şu an konuyla ilgili değil ama 8.4.x hayal kırıklığı bir ssh tüneli kurmak için benim katalizörümdü. – Erik