2013-11-21 32 views
5

我在本地主機上使用Mysql(在Ubuntu和Windows中)。我想設置一個全局變量,並且我嘗試了所有方法,但即使我從mysql中收到「ok」消息,然後當我執行「select @var」時,它總是說「NULL」。 我已經試過:無法在Mysql上設置全局變量

set global var=17; 
set @global.var=17; 
set @@var=17; 

誰能幫助我?

在此先感謝。

ps:我有SUPER特權。

+0

我只想嘗試「$ var = 17;」 – user2196728

+1

什麼? 「$」simbol用於PHP中的變量,而不是MySQL中的變量。 –

+0

oups對不起,我沒有集中! – user2196728

回答

4

變量名稱var未引用有效的系統變量。 SET語句中的GLOBALSESSION關鍵字用於指定設置MySQL系統變量的範圍,而不是MySQL用戶變量。

嘗試例如:

SELECT @@global.net_read_timeout ; 

SET GLOBAL net_read_timeout = 45 ; 

SELECT @@global.net_read_timeout ; 

http://dev.mysql.com/doc/refman/5.5/en/set-statement.html

+1

因此,不可能永久設置和存儲您選擇的任何名稱的變量? –

+1

這是正確的。 'SET GLOBAL'用於修改預定義的MySQL *系統變量*。它不用於設置用戶定義的變量*。我沒有解釋MySQL響應「確定」消息,而不是發出錯誤。也許沒有一個標準的SQLSTATE可以準確地表示錯誤,也許只是返回一個成功代碼更容易;或者,也許這是關於未來升級的設計決策,以及對已棄用和已刪除的系統變量的某種程度的向後兼容性。 – spencer7593

1

按照MySQL 5.0 Reference Manual

用戶定義的變量是會話特定的。也就是說,由一個客戶端定義的用戶變量 不能被其他客戶端看到或使用。當客戶端退出時,所有 變量將自動釋放。

您可以考慮使用像MySQL Global User Variables UDF這樣的擴展名來使用全局(持久共享)變量。