これが(クライアントセッションで)発生する唯一の方法(そして私にとって時々発生する方法)は、クライアント接続の短いタイムアウトによってビットを取得することです。次のようになります:
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...」コマンドを異なる接続で発信している可能性があります。ユーザー変数は、異なる接続間で共有されません。