sql >> Databáze >  >> RDS >> Mysql

SET uživatelsky definovaná proměnná v mysql return null?

Jediný způsob, jak se to může stát (v relaci klienta) – a jak se to čas od času stává mně – je, že vás zasáhne krátký časový limit na klientském připojení. Jde to takto:

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)

Musíte inicializovat své proměnné a používat je v rámci souvislé klientské relace. Když relace skončí, ztratíte všechny své proměnné.

Další vysvětlení, jak zdůrazňují ostatní v komentářích, je, že příkazy zasahují server z různých připojení; váš problém nemusí být časový limit, ale to, že vytváříte příkazy "SET ..." a "SELECT ..." v různých připojeních. Uživatelské proměnné nejsou sdíleny mezi různými připojeními.




  1. Použijte FILE_IDEX() k vrácení ID databázového souboru na serveru SQL Server

  2. Spojte dva stoly (se vztahem 1-M), kde je třeba druhý stůl „srovnat“ do jednoho řádku

  3. Vyplnění výběrového vstupního pole hodnotou z mysql

  4. MySQL přidat sloupec NOT NULL