2013-11-21 14 views
5

Tôi đang sử dụng Mysql trong localhost (trong ubuntu và cũng có trong cửa sổ). Tôi muốn thiết lập một biến toàn cầu, và tôi đã cố gắng theo mọi cách nhưng mặc dù tôi nhận được một thông điệp "ok" từ mysql, sau đó khi tôi thực hiện "select @var" thì allways nói "NULL". Tôi đã thử:Không thể đặt biến toàn cầu trên Mysql

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

Có ai giúp tôi không?

Xin cảm ơn trước.

ps: Tôi có đặc quyền SUPER.

+0

tôi chỉ cần thử "$ var = 17;" – user2196728

+1

Cái gì? Các "$" simbol là cho các biến trong Php, không phải trong MySQL. –

+0

oups xin lỗi, tôi không tập trung! – user2196728

Trả lời

4

Tên biến số var không tham chiếu biến hệ thống hợp lệ. Các từ khóa GLOBALSESSION trong câu lệnh SET được sử dụng để chỉ định phạm vi khi đặt biến hệ thống MySQL, không phải biến người dùng MySQL.

Hãy thử ví dụ:

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

Vì vậy, không thể đặt và lưu trữ vĩnh viễn một biến với bất kỳ tên nào bạn chọn? –

+1

Đó là chính xác. 'SET GLOBAL' là để sửa đổi các biến hệ thống MySQL * được xác định trước *. Nó không được sử dụng để đặt * biến do người dùng xác định *. Tôi không có một lời giải thích cho MySQL trả lời với một thông báo "OK", thay vì phát ra một lỗi. Có lẽ không có một SQLSTATE chuẩn đại diện chính xác lỗi, có lẽ nó dễ dàng hơn để trả lại mã thành công; hoặc, có thể đó là một quyết định thiết kế liên quan đến việc nâng cấp trong tương lai và mức độ tương thích ngược đối với các biến hệ thống không được chấp nhận và bị loại bỏ. – spencer7593

1

Theo MySQL 5.0 Reference Manual:

biến người dùng định nghĩa là phiên cụ thể. Đó là, một biến người dùng được xác định bởi một khách hàng không thể được nhìn thấy hoặc sử dụng bởi các ứng dụng khách khác. Tất cả các biến số cho một phiên khách hàng nhất định sẽ tự động được giải phóng khi số thoát ứng dụng khách của khách hàng đó.

Bạn có thể xem xét sử dụng tiện ích mở rộng như MySQL Global User Variables UDF để sử dụng biến toàn cầu (được chia sẻ liên tục).

Các vấn đề liên quan