Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SET variável definida pelo usuário no mysql retorna nulo?


A única maneira de isso acontecer (em uma sessão de cliente) - e da maneira que acontece comigo de tempos em tempos - é você ser mordido por um curto tempo limite na conexão do cliente. Fica assim:
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)

Você precisa inicializar suas variáveis ​​e usá-las em uma sessão de cliente contígua. Quando a sessão vai embora, você perde todas as suas variáveis.

A outra explicação, como apontado por outros nos comentários, é que os comandos estão atingindo o servidor de conexões diferentes; seu problema pode não ser um timeout, mas que você está originando os comandos "SET ..." e "SELECT ..." em conexões diferentes. As variáveis ​​de usuário não são compartilhadas entre diferentes conexões.