Lỗi chung về cơ sở dữ liệu: Máy chủ MySQL 2006 đã biến mất


24

Gần đây tôi bắt đầu gặp lỗi mỗi lần tôi thử và thêm một nội dung cho dù là loại nào. Đây là lỗi hiển thị trong trình duyệt:

Ngoại lệ chưa được ném thêm trong khi xử lý ngoại lệ.

PDOException gốc: SQLSTATE [HY000]: Lỗi chung: 2006 Máy chủ MySQL đã biến mất: CHỌN COUNT (cid) TỪ {bình luận} trạng thái WHERE =: status; Mảng ([: status] => 0) trong comment_count_unpublished () (dòng 313 của /Appluggest/MAMP/htdocs/modules/comment/comment.module).

Bổ sung

PDOException: SQLSTATE [HY000]: Lỗi chung: 2006 Máy chủ MySQL đã biến mất: INSERT INTO {watchdog} (uid, loại, thông báo, biến, mức độ nghiêm trọng, liên kết, vị trí, tham chiếu, tên máy chủ, dấu thời gian) VALUES (: db_insert_placeholder_0, db_insert_placeholder ,: db_insert_placeholder_2 ,: db_insert_placeholder_3 ,: db_insert_placeholder_4 ,: db_insert_placeholder_5 ,: db_insert_placeholder_6 ,: db_insert_placeholder_7 ,: db_insert_place_ Mảng ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type :! Message trong% function (dòng% dòng của% file). [: Db_insert_placeholder_3] s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Lỗi chung: 2006 Máy chủ MySQL đã biến mất: CHỌN COUNT (cid) TỪ {bình luận} trạng thái WHERE =: status; Mảng ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Ứng dụng / MAMP /htdocs/modules/comment/comment.module";s nam: "% line"; i: 1313 > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = nút% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) trong dblog_watchdog () (dòng 154 dblog.module).

Tôi cũng nhận được lỗi sau trong tệp lỗi php của mình:

Lỗi nghiêm trọng của PHP: Đã hủy ngoại lệ 'PDOException' với thông báo 'SQLSTATE [HY000]: Lỗi chung: 2006 Máy chủ MySQL đã biến mất' trong /Appluggest/MAMP/htdocs/includes/database/database.inc:2136

Theo dõi ngăn xếp:
0 /Appluggest/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> thực thi (Mảng)
1 /Appluggest/MAMP/htdocs/includes/database/database.inc66 > thực thi (Mảng, Mảng)
2 /Appluggest/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> truy vấn ('CHỌN hết hạn, ...', Mảng, Mảng)
3 / Ứng dụng / MAMP / htdocs / gồm / lock.inc (167): db_query ('CHỌN hết hạn, ...', Mảng)
4 /Appluggest/MAMP/htdocs/includes/lock.inc(146): lock_may_be_av Available ('theme_registry: ...' )
5 /Appluggest/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Appluggest/MAMP/htdocs/includes/bootstrap.inc(427): ThemeReg- Mảng)
7 [chức năng nội bộ]: DrupalCacheArray -> __ Destuct ()
8 {main} được ném vào /Appluggest/MAMP/htdocs/includes/database/database.inc trên dòng 2136

Tôi gặp một chút khó khăn khi giải mã các thông báo lỗi này. Bất cứ ai có thể giúp tôi hiểu những gì đang xảy ra ở đây?

Câu trả lời:


31

9 trong số 10 lỗi này là do max_allowed_packetcài đặt không đủ lớn trong tệp my.cnf của máy chủ MySQL của bạn.

Mặc định tiêu chuẩn cho MAMP theo kinh nghiệm của tôi là 1M, thường không đủ cho Drupal (đặc biệt là xem xét kích thước của một số chuỗi bộ đệm mà nó tạo ra).

Hãy thử tăng dần cài đặt đó để xem lỗi có biến mất không. Tôi chắc rằng một tìm kiếm nhanh trên google sẽ cho bạn biết cách thực hiện điều đó trong MAMP.


May mắn là trường hợp của tôi không rơi vào 1 lần trong số 10 loại. Đề xuất của bạn làm việc như một nét duyên dáng! Cảm ơn!
Mike2012

Đối mặt với lỗi tương tự trong windows. Đã cấu hình apache, mysql và php stack cục bộ ... vui lòng hướng dẫn
Prerit Mohan

Và trong trường hợp chia sẻ lưu trữ, tôi có thể làm gì?
mohammed amine bourkadi

Liên lạc với chủ nhà của bạn, yêu cầu họ thực hiện thay đổi. Nếu họ không thể / sẽ không, bạn cần phải quyết định xem máy chủ này có phù hợp với bạn không @mohammedaminebourkadi.
Clive

6

Lỗi MySQL / MariaDB này:

Lỗi: 2006 ( CR_SERVER_GONE_ERROR) - Máy chủ MySQL đã biến mất

về cơ bản, khách hàng không thể gửi câu hỏi đến máy chủ .

Điều này có thể xảy ra do trục trặc tạm thời, truy vấn SQL quá lớn hoặc không hợp lệ, cấu hình sai máy chủ của bạn hoặc giới hạn của nhà cung cấp dịch vụ lưu trữ của bạn.

Nói chung, lỗi này có thể là kết quả của một số điều, chẳng hạn như:

  • một truy vấn đến máy chủ không chính xác hoặc quá lớn,

    Giải pháp: Tăng max_allowed_packetbiến .

    Lưu ý: Hãy chắc chắn rằng biến nằm dưới [mysqld]phần, không [mysql].

    Lưu ý: Đừng quên khởi động lại máy chủ MySQL / MariaDB.

  • Bạn đã hết thời gian chờ từ kết nối TCP / IP ở phía máy khách.

    Giải pháp: Tăng wait_timeoutbiến .

  • Bạn đã cố chạy một truy vấn sau khi kết nối với máy chủ đã bị đóng.

    Giải pháp: Một lỗi logic trong ứng dụng nên được sửa chữa.

  • Tra cứu tên máy chủ không thành công (ví dụ: sự cố máy chủ DNS) hoặc máy chủ đã được bắt đầu với --skip-networkingtùy chọn.

    Một khả năng khác là tường lửa của bạn chặn cổng MySQL (ví dụ 3306 theo mặc định).

  • Các chủ đề đang chạy đã bị giết, vì vậy hãy thử lại.

  • Bạn đã gặp một lỗi trong đó máy chủ đã chết trong khi thực hiện truy vấn.

  • Một máy khách đang chạy trên một máy chủ khác không có các đặc quyền cần thiết để kết nối.

  • Và nhiều hơn nữa, vì vậy hãy tìm hiểu thêm tại: B.5.2.9 Máy chủ MySQL đã biến mất .

Để biết thêm chi tiết, vui lòng kiểm tra MySQL hoặc nhật ký hệ thống của bạn (ví dụ /var/log/messages).

Để gỡ lỗi máy chủ hoặc máy khách MySQL, vui lòng kiểm tra: 26.5 Gỡ lỗi và chuyển MySQL .


Trong trường hợp bạn đang cố gắng nhập cơ sở dữ liệu từ tệp bằng cách sử dụng drushhoặc mysqllệnh, bạn có thể:

  • Thêm một tùy chọn bắt buộc ( -f) mysqlđể tiến hành và thực hiện phần còn lại của các truy vấn.

    Điều này hữu ích nếu cơ sở dữ liệu có một số truy vấn lớn liên quan đến bộ đệm lớn, nhưng dù sao cũng không liên quan.

    Sử dụng drush, thử:cat foo.sql | $(drush sqlconnect) -f

  • Hãy thử áp dụng --max-allowed-packettùy chọn cho mysqlcác giá trị nhỏ hơn.

  • Tăng max_allowed_packetwait_timeout trong cấu hình máy chủ của bạn (ví dụ ~/.my.cnf).

  • Kết xuất lại cơ sở dữ liệu ban đầu bằng cách sử dụng --skip-extended-inserttùy chọn để chia nhỏ các truy vấn lớn. Sau đó nhập lại tệp.


Xem thêm: ERROR 2006 (HY000): Máy chủ MySQL đã biến mất


3

Câu trả lời mà @Clive đưa ra bình thường là trường hợp này, nhưng có thể có một nguyên nhân bổ sung, đặc biệt là với các hình thức thêm nút.

Các biểu mẫu thêm nút thường lớn và việc xử lý chúng có thể sử dụng rất nhiều bộ nhớ (đặc biệt là nếu có bất kỳ xử lý hình ảnh nào trong quá trình lưu, như với các mô-đun cắt xén). Nếu máy chủ hết bộ nhớ, quy trình mysqld có thể bị tắt, điều này dẫn đến cùng một thông báo "biến mất".

Manh mối là tìm trong nhật ký máy chủ. Trên máy CentOS, bạn có thể thấy mục sau trong / var / log / message

Ngày 1 tháng 1 00:00:00 Nhân tên máy chủ: Hết bộ nhớ: Tiêu diệt quá trình XXXX (mysqld) điểm XXX hoặc hy sinh con
Ngày 1 tháng 1 00:00:00 Nhân tên máy chủ: Quá trình giết chết XXXX, UID XX, (mysqld) , anon-rss: XXXkB, tệp-rss: XXkB

Giải pháp ở đây là thêm RAM, hoặc thêm / tăng trao đổi.

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.