Mysql
 sql >> Database >  >> RDS >> Mysql

SET variabile definita dall'utente in mysql restituisce null?

L'unico modo in cui ciò può accadere (in una sessione client) - e il modo in cui mi succede di tanto in tanto - è che tu venga morso da un breve timeout sulla connessione client. Funziona così:

mysql> set @a = 10;

mysql> [wait for N+1 minutes, where N is the client timeout]

mysql> select @a;
+------+
| NULL |
+------+
| NULL | 
+------+
1 row in set (0.00 sec)

Devi inizializzare le tue variabili e usarle all'interno di una sessione client contigua. Quando la sessione va via, perdi tutte le tue variabili.

L'altra spiegazione, come sottolineato da altri nei commenti, è che i comandi colpiscono il server da connessioni diverse; il tuo problema potrebbe non essere un timeout, ma che stai originando i comandi "SET ..." e "SELECT ..." in connessioni diverse. Le variabili utente non sono condivise tra connessioni diverse.