2014-06-07 11 views
7

Desidero impostare un valore predefinito statement_timeout per il mio accesso a un database postgres. Dopo aver configurato le mie variabili di ambiente, ora lo ho dove psql mi registra sul mio database preferito e tabella. Tuttavia, mentre sto esplorando molte delle tabelle in esso, mi piacerebbe avere un timeout di dichiarazione di circa un minuto. Questo può essere fatto semplicemente digitando SET statement_timeout TO '1min'; all'inizio di ogni sessione, ma questo è odioso da digitare ogni volta. Non ho accesso alla configurazione del server né vorrei cambiarlo. Idealmente, potrei fare qualcosa con l'effetto del flag alias psql='psql -c "SET statement_timeout TO '1min';"' except the -c` di psql non consente l'input interattivo. Ci sono delle buone soluzioni a questo problema, o sono sempre condannato a impostare manualmente il timeout per ogni sessione interattiva?psql imposta default_timeout come utente in postgres

risposta

12

Si potrebbe utilizzare il file .psqlrc (se non ne avete uno nella vostra home directory, crearla, se siete su Windows invece di *nix, il file è % appdata% \ postgresql \ psqlrc.conf invece) e impostare il seguente comando:

set statement_timeout to 60000; commit; 

Tale impostazione è espresso in millisecondi, in modo che imposteremo il timeout a 1 minuto. .psqlrc non viene utilizzato con -c-X invocazioni di psql, in modo da consentire di ottenere il timeout della modalità interattiva su 1 minuto.

È quindi possibile eseguire il seguente in psql per verificare che la configurazione ha preso effetto:

show statement_timeout; 
+0

io non conoscevo .psqlrc! Sulla mia versione di psql (8.4.5) non conta 'set [...]' come una transazione, e quindi mi sono lamentato di 'commit' con' psql: ~/.psqlrc: 1: ATTENZIONE: non c'è transazione in corso ». Altrimenti ha funzionato. Grazie! – Erik

+0

Certo, nessun problema. Ah sì, la stranezza di 8.4.x ... Devo ancora usare quella versione a volte e sono infastidita da ciò che non è ancora presente o da come si comporta in modo diverso. =) – khampson

+0

Questo è certamente fuori discussione, ma la frustrazione 8.4.x è stata il mio catalizzatore per la creazione di un tunnel ssh. – Erik

Problemi correlati