当我使用
创建用户定义的变量时SET @a =10;
我也检查了
SET @a := 10;
以上查询执行成功。访问变量时,它会为NULL
值而不是10
。我使用此查询
SELECT @a;
答案 0 :(得分:1)
这种情况发生的唯一方式(在客户端会话中) - 以及它不时发生的方式 - 是你在客户端连接上的短暂超时。它是这样的:
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)
您必须初始化变量并在连续的客户端会话中使用它们。会话消失后,您将丢失所有变量。
其他解释,正如评论中其他人所指出的那样,命令是从不同的连接中命中服务器;您的问题可能不是超时,而是您在不同的连接中发起“SET ...”和“SELECT ...”命令。用户变量不在不同的连接之间共享。