Lỗi chung: 2006 Máy chủ MySQL đã biến mất [đóng]


8

Đây là lỗi tôi đột nhiên nhận được.

Additional uncaught exception thrown while handling exception.

Original
PDOException: SQLSTATE[70100]: Unknown error: 1317 Query execution was interrupted...my query

Additional
PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away...my query

Sau khi thực hiện một số nghiên cứu, nó có vẻ giống như một mô-đun tùy chỉnh, mà tôi đã thực hiện, đang thử một truy vấn quá lớn. Một giải pháp có vẻ hiệu quả với nhiều người là:

  1. Mở my.ini
  2. Thay đổi "max_allowed_packet" từ "1m" thành "16m" (hoặc lớn hơn)
  3. Lưu my.ini và khởi động lại MySQL

Tuy nhiên, tôi đang ở trên một máy chủ dùng chung, vì vậy tôi không thể chỉnh sửa my.ini và mặc dù nhà cung cấp của tôi đã xác nhận với tôi rằng giá trị được đặt thành 1M, họ sẽ không tăng nó.

Tôi cũng đã cố gắng thêm này: ini_set('mysqli.reconnect', 'on');để settings.php. Nó không giải quyết được vấn đề.

Có ai biết về một giải pháp khác, hoặc làm việc xung quanh?

Cảm ơn.


Câu trả lời:


8

Các công ty lưu trữ chia sẻ không cho đi đặc quyền SIÊU . Nếu bạn có nó, bạn có thể dễ dàng đặt max_allowed_packet thành 512M chỉ bằng cách chạy này:

mysql> SET GLOBAL max_allowed_packet = 1024 * 1024 * 512;

Không cần khởi động lại. Sau đó, tất cả các kết nối đến sau đó có thể có gói 512M .

Bạn không thể làm điều này:

mysql> SET max_allowed_packet = 1024 * 1024 * 512;

bởi vì bạn nhận được

ERROR 1621 (HY000): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value

Cách thay thế duy nhất tôi có thể nghĩ đến là chuyển sang Amazon EC2 và cài đặt MySQL ở đó. Bằng cách đó, bạn có thể có quyền tự do chỉnh sửa my.cnf / my.ini và có đặc quyền SUPER .


0

Tôi đã yêu cầu nhà cung cấp của tôi tăng giá trị, nhưng họ sẽ không làm thế. Tôi có thể hiểu tại sao, họ là một doanh nghiệp và họ muốn tôi trả 29,99 một tháng cho một máy chủ chuyên dụng, thay vì 4,99 cho một máy chủ dùng chung.

Tuy nhiên, có một giải pháp: xác định truy vấn quá lớn và chia nó thành hai hoặc nhiều phần. Tôi chia câu hỏi của tôi thành một nửa: vấn đề đã được giải quyết. Không hiệu quả - có - nhưng tốt hơn là trang web của tôi hoàn toàn không hoạt động hoặc phải trả thêm tiền.


Xin lưu ý những gì tôi đã nói về Gói MySQL ( superuser.com/a/273833/76764 ) Các nghi phạm thông thường có thể làm tắc nghẽn gói MySQL là các trường TEXT / BLOB lớn. Vì vậy, bạn có thể muốn nghĩ về việc nén TEXT/BLOB fieldsmã thay thế jerry thay vì jerry của bạn .
RolandoMySQLDBA

Vâng, có thể đó có thể là vấn đề, nhưng mặc dù truy vấn CHỌN của tôi tương đối phức tạp, tập kết quả trả về chỉ là vài trăm ký tự văn bản.
dbj44

2
Bạn có thể bắt đầu gặp vấn đề với các bảng bộ đệm khi thực hiện các INSERT khá lớn. Giải pháp của bạn sẽ không hoạt động ở đây hoặc bất kỳ nơi nào khác mà Drupal đang thực hiện truy vấn.
mpdon Arena

Đó không phải là một CHERTN, chỉ là một truy vấn CHỌN với khoảng 25 tham gia. Tất cả được thực hiện với trình xây dựng truy vấn. Bạn có biết tại sao điều này sẽ gây ra một lỗi như vậy? Thực hiện INSERT thông qua trình xử lý biểu mẫu không phải là vấn đề.
dbj44

0

Vấn đề là bởi vì max_allowed_packet, bạn đặt nó với giá trị lớn hơn.

Cách khắc phục sự cố này (nếu bạn đang ở trong windows và sử dụng xamp khác tìm tệp my.ini) Truy
cập xampp \ mysql \ bin
Mở my.ini
Thay đổi "max_allowed_packet" từ "1m" thành "16m"
Lưu my.ini
Bây giờ khởi động lại MySql thông qua bảng điều khiển XAMPP.

Tìm thấy giải pháp này ở đây. http://minorpoint.blogspot.com/2007/09/mysql-server-has-gone-away.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.