在mysql中SET用户定义的变量返回null?

时间:2012-02-06 12:02:03

标签: mysql

当我使用

创建用户定义的变量时
SET @a =10; 

我也检查了

SET @a := 10;

以上查询执行成功。访问变量时,它会为NULL值而不是10。我使用此查询

访问了已定义的变量
SELECT @a;

1 个答案:

答案 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 ...”命令。用户变量不在不同的连接之间共享。