Mất kết nối với máy chủ MySQL trong khi truy vấn

2022-03-20 15:24:42

Mã lỗi:2013

Today, morning I got an error like, Mã lỗi: 2013 Mất kết nối với MySQL Server trong khi truy vấn. Tôi đang kiểm tra một số tải giao dịch trong vòng lặp while.

Dưới đây là hàm mẫu của tôi để chèn 10000000 tên giả bằng vòng lặp while.

Sau một vài phút, tôi gặp lỗi mất kết nối với MySQL và một lần nữa, tôi đã thử và gặp lỗi tương tự sau vài phút.
Tôi đã thử vài lần và lần nào cũng gặp lỗi, nhưng tôi ghi lại thời gian và nhận thấy rằng lỗi đang phát sinh sau mỗi 10 phút.

Bây giờ, đây là điểm mấu chốt đối với tôi rằng sau mỗi 10 phút, việc thực thi truy vấn sẽ dừng lại.

Tôi đã tìm kiếm lỗi này trên google và đưa ra các giải pháp phù hợp.
Tôi đang sử dụng bàn làm việc để thực thi truy vấn, vì vậy ở đây tôi thấy rằng có thời gian chờ mặc định 600 giây đã được đặt trong tùy chọn bàn làm việc.

Bây giờ đã đến lúc thay đổi các giá trị thời gian chờ mặc định này.

Vui lòng chuyển đến Workbench Edit Menu -> Preferences -> SQL Editor, ở đây tôi thay đổi giá trị mặc định của 600 giây thành 84000 giây.

Vui lòng dừng tất cả các truy vấn đang chạy và khởi động lại bàn làm việc của bạn.

Dưới đây là hình ảnh tham khảo.

Đây là những gì tôi đã tìm thấy và sửa chữa cho bàn làm việc của mình, nhưng mọi lúc, đây không phải là giải pháp vì lỗi này có vài trường hợp nữa.

Vui lòng đọc bên dưới chủ yếu là ba loại lý do cho lỗi này.

Về cơ bản, lỗi này xảy ra khi hàng triệu giao dịch sẽ được thực hiện trong một đợt. Điều này cũng được chỉ ra rằng có một số vấn đề với mạng. You should change net_read_timeout and net_write_timeout parameter value in config file. Tham số này xác định số giây chờ đợi để thực hiện đọc và ghi cho một kết nối cụ thể. Giá trị thời gian chờ này chỉ áp dụng cho Kết nối TCP / IP. Giá trị mặc định cho thông số này là 30 đến 60 giây và bạn có thể thay đổi giá trị này theo yêu cầu.

Thời gian chờ kết nối ban đầu, điều này cũng gây ra lỗi này. Khi một máy khách sẽ kết nối máy chủ và tại thời điểm kết nối thời gian chờ được đặt rất ít giây. Bạn có thể giải quyết bằng cách tăng connect_timeout parameter. Bạn cũng có thể kiểm tra kết nối bị hủy bỏ bởi máy chủ bằng lệnh SHOW GLOBAL STATUS LIKE ‘Aborted_connects’.

Kích thước gói tối đa, đây có thể là một nguyên nhân khác nếu kích thước dữ liệu của bạn rất lớn và kích thước gói đã xác định nhỏ, vì vậy tại thời điểm này, bạn yêu cầu thay đổi tham số max_allowed_packet.

Đối với các nguyên nhân khác nhau, tôi đã tham khảo từ đây.

Xem thêm:


Chia sẻ: