2012-02-06 38 views
5

Cuando creé una variable definida por el usuario utilizandoSET variable definida por el usuario en mysql return null?

SET @a =10; 

También comprobé

SET @a := 10; 

la consulta anterior ejecutado con éxito. Al acceder a la variable me da NULL valor en lugar de 10. Accedí a las variables definidas utilizando esta consulta

SELECT @a; 
+1

Funciona bien para mí. ¿Qué versión de MySQL estás usando? ¿Dónde estás ejecutando las consultas? – Naltharial

+0

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

+1

Debe establecer y acceder a variables de usuario en la misma sesión. ... SET @ a = 10 y SET @a: = 10 son iguales. – Devart

Respuesta

1

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.

Cuestiones relacionadas