2012-03-29 16 views
19

Tôi đã tìm hiểu cách thay đổi giá trị mặc định của max_allowed_packet trong MySQL bằng cách sử dụng SET GLOBAL. Tuy nhiên, mỗi lần tôi sử dụng lệnh này, giá trị mặc định vẫn không bị ảnh hưởng! Tôi đã sử dụng các lệnh sau:SET GLOBAL max_allowed_packet không hoạt động

mysql --user=root --password=mypass 
mysql> SET GLOBAL max_allowed_packet=32*1024*1024; 
Query OK, 0 rows affected (0.00 secs) 
mysql> SHOW VARIABLES max_allowed_packet; 

Và sau đó kết quả là max_allowed_packet = 1048576. Tôi thiếu gì?

Trả lời

33

Hmmmm .. Bạn đã đạt đến điều này là NOT-A-BUG. :)

Nếu bạn thay đổi biến hệ thống toàn cục, giá trị được ghi nhớ và sử dụng cho các kết nối mới cho đến khi máy chủ khởi động lại. (Để thiết lập biến toàn cục hệ thống vĩnh viễn, bạn nên đặt nó trong tệp tùy chọn.) Thay đổi hiển thị cho bất kỳ ứng dụng khách nào truy cập biến toàn cầu đó. Tuy nhiên, thay đổi chỉ ảnh hưởng đến phiên tương ứng chỉ cho các khách hàng kết nối sau khi thay đổi. Thay đổi biến toàn cầu không không ảnh hưởng đến biến phiên cho bất kỳ khách hàng nào hiện đang được kết nối (thậm chí không của khách hàng phát hành câu lệnh SET GLOBAL).

Tham khảo this quá. Đọc lời giải thích của Shane Bester.

Bạn nên thay đổi từ tệp my.ini/my.cnf và khởi động lại máy chủ để cài đặt max_allowed_packet có hiệu lực.

+0

ngoại trừ "lỗi" được đóng dưới dạng "không phải lỗi". –

+1

cảm ơn bạn đã gửi câu trả lời của bạn. nhưng tôi đã thử khởi động lại mysql sau đó, vẫn im nhận giới hạn 1 Mb! – Breeze

+0

@ J-16 SDiZ, Yup họ đã đánh dấu vấn đề là Không phải lỗi (Vấn đề, Điều gì vẫn còn khó hiểu đối với chúng tôi). –

1

Chỉ cần một cách nhanh chóng để xem biến cho bất kỳ ai gặp phải điều này. Để có được giá trị trở lại bạn cần phải chạy

SHOW VARIABLES LIKE 'max_allowed_packet' 
+0

OP đã làm điều này và không trả lại giá trị mong đợi vì các lý do được nêu trong câu trả lời được chấp nhận. – cbmanica

2

Sau khi chạy

set global max_allowed_packet=1000000000; 

bạn phải khởi động lại mysql trước

SHOW VARIABLES LIKE 'max_allowed_packet' 

sẽ hiển thị các giá trị mới.

Tôi gặp sự cố này khi khởi động lại mysql thông qua tùy chọn hệ thống MAC OSX và giá trị không thay đổi. Vì vậy, bằng cách đăng nhập vào mysql thông qua giao diện điều khiển

mysql -u root -p 

thay đổi nó và sau đó khởi động lại mySql dường như hoạt động. Có thể đã có một hệ điều hành OS X quirk mặc dù.