Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SET benutzerdefinierte Variable in MySQL gibt Null zurück?

Die einzige Möglichkeit, wie dies passieren kann (in einer Client-Sitzung) - und so passiert es mir von Zeit zu Zeit - ist, dass Sie durch eine kurze Zeitüberschreitung bei der Client-Verbindung gebissen werden. Das geht so:

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)

Sie müssen Ihre Variablen initialisieren und sie innerhalb einer zusammenhängenden Clientsitzung verwenden. Wenn die Sitzung beendet wird, verlieren Sie alle Ihre Variablen.

Die andere Erklärung, auf die von anderen in den Kommentaren hingewiesen wurde, ist, dass die Befehle den Server von verschiedenen Verbindungen aus treffen; Ihr Problem ist möglicherweise kein Timeout, sondern dass Sie die Befehle "SET ..." und "SELECT ..." in verschiedenen Verbindungen erzeugen. Benutzervariablen werden nicht über verschiedene Verbindungen geteilt.