MySQL是世界上最流行的數據庫之一。在日常的開發中經常會出現MySQL變量語句執行不了的情況。那么這是為什么呢?
SET @var := 1; #設置變量var的值為1 SELECT @var; #輸出變量var的值
上面的例子是正確并且常見的,下面我們來看看一些可能導致變量語句無法執行的原因。
可能原因一:沒有啟用MySQL的變量功能
SELECT @@SESSION.sql_mode; #查詢當前會話的sql_mode
如果查詢結果中不包含NO_AUTO_CREATE_USER,那么說明變量功能沒有被啟用。此時需要在MySQL的配置文件中加入以下內容啟用變量功能。
[mysqld] ... sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BY ...
可能原因二:使用了已被保留的變量名
SET @var := 1; #設置變量var的值為1 SELECT @var; #輸出變量var的值 SET @var := 2; #設置變量var的值為2 SELECT @var; #輸出變量var的值
上面的例子可以順利執行,但以下例子就會出現問題。
SET @var := 1; SELECT @var; SET @var := 2; SELECT @var; SELECT @VAR; #錯誤代碼
錯誤代碼的原因是變量名被寫為@VAR,而變量名是區分大小寫的,所以這個變量名已經不是我們最開始定義的@var了。
可能原因三:變量名包含特殊字符
SET @var! := 1; #錯誤的語句 SELECT @var!;
MySQL中變量名只能包含字母、數字和下劃線,不能包含其它字符。
以上就是一些導致MySQL變量語句無法執行的可能原因和解決方法。