2011-04-30 21 views
8

Sto tentando di riprodurre un errore di timeout della connessione riducendo temporaneamente "wait_timeout" a 60 secondi invece dei 28800 secondi predefiniti.MySql 'wait_timeout' Variabile globale vs variabile

Ho aggiunto wait_timeout = 60 al file my.ini e riavviato MySql. Sfortunatamente, non riesco ancora a riprodurre la condizione di errore (a meno che non desideri attendere 28800 secondi).

Le query sottostanti sembrano indicare che "wait_timeout" è impostato su 60 a livello di variabile globale ma è ancora impostato su 28800 secondi per la variabile regolare (è lo stesso della variabile di sessione?).

Come posso risolvere questo? Come viene sovrascritta l'impostazione di my.ini?

Grazie per qualsiasi consiglio dato che sono ancora un po 'un amministratore di MySql. :)

Sto eseguendo MySql 5.5.10 su Windows XP.

mysql> show variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 28800 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

mysql> show global variables like 'wait_timeout'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| wait_timeout | 60 | 
+---------------+-------+ 
1 row in set (0.00 sec) 

risposta

7

Da documentazione di MySQL: wait_timeout:

All'avvio filo, il valore wait_timeout sessione viene inizializzata dal valore globale wait_timeout o dal valore globale interactive_timeout, a seconda del tipo di client (come definito dall'opzione di connessione CLIENT_INTERACTIVE a mysql_real_connect()). Vedi anche interactive_timeout.

Si dovrebbe anche ridurre la variabile globale interactive_timeout nel proprio file ini.

Si noti inoltre che:

Questo timeout si applica solo alle connessioni di file socket UNIX TCP/IP e, non connessioni effettuate utilizzando named pipe, o memoria condivisa.

(Come sottolineato Vladislav la nota di cui sopra si dovrebbe tener conto, come this bug has been fixed e il timeout vale per le connessioni con named pipe o memoria condivisa pure, ma a quanto pare la documentazione non sono stati aggiornati.)

+2

Grazie per la risposta rapida. ho modificato la variabile globale interactive_timeout nel file my.ini che ha fatto il trucco – Justin

+0

Questo timeout si applica solo ai socket di dominio TCP e Unix, informazioni obsolete, bug nella documentazione. Questo problema è stato risolto nel 2009 (http://bugs.mysql.com/bug.php?id=31621) –

+0

@Vladislav: thnx, non lo sapevo. –