当我使用创建用户定义的变量时
SET @a =10;
我还检查了
SET @a := 10;
上述查询成功执行。在访问变量时,它给我CCD_ 1值而不是CCD_。我使用这个查询访问了定义的变量
SELECT @a;
(在客户端会话中)发生这种情况的唯一方式——以及我不时发生的方式——就是在客户端连接上短暂超时。它是这样的:
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…"one_answers"SELECT…"命令。用户变量不会在不同的连接之间共享。