Jedyny sposób to może się zdarzyć (w sesji klienta) - i tak to się dzieje dla mnie od czasu do czasu - jest dostać trochę za krótki czas oczekiwania na połączenie klienta. To jest tak:
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)
Należy zainicjować zmienne i używać ich w ramach ciągłej sesji klienta. Kiedy sesja zniknie, tracisz wszystkie zmienne.
Innym wyjaśnieniem, jak zauważyli inni w komentarzach, jest to, że polecenia trafiają na serwer z różnych połączeń; Twój problem może nie być limitem czasu, ale pochodzi z komend "USTAW ..." i "WYBIERZ ..." w różnych połączeniach. Zmienne użytkownika nie są udostępniane dla różnych połączeń.
Działa dobrze dla mnie. Którą wersję MySQL używasz? Gdzie wykonujesz zapytania? – Naltharial
Używanie tej ostatniej składni: SET @a: = 10; to po prostu działa dla mnie. Zmienne są powiązane z połączeniem TCP, czy próbujesz wszystkiego podczas tej samej sesji? – Evert
Powinieneś ustawić i uzyskać dostęp do zmiennej użytkownika w tej samej sesji. ... SET @ a = 10 i SET @a: = 10 są równe. – Devart