La única manera de que esto pueda suceder (en una sesión de cliente) - y la forma en que sucede para mí de vez en cuando - es usted consigue mordido por un corto tiempo de espera en el conexión del cliente Funciona de la siguiente manera:
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)
Debe inicializar las variables y utilizarlas en una sesión de cliente contigua. Cuando la sesión se va, pierdes todas tus variables.
La otra explicación, como lo señalaron otros en los comentarios, es que los comandos están golpeando el servidor desde diferentes conexiones; su problema puede no ser un tiempo de espera, sino que está originando los comandos "SET ..." y "SELECT ..." en diferentes conexiones. Las variables de usuario no se comparten en diferentes conexiones.
Funciona bien para mí. ¿Qué versión de MySQL estás usando? ¿Dónde estás ejecutando las consultas? – Naltharial
Usando la última sintaxis: SET @a: = 10; Simplemente funciona para mí. Las variables están ligadas a una conexión tcp, ¿está intentando todo durante la misma sesión? – Evert
Debe establecer y acceder a variables de usuario en la misma sesión. ... SET @ a = 10 y SET @a: = 10 son iguales. – Devart