Sửa lỗi Mysql Server Has Gone Away Đơn Giản & Hiệu Quả

Sửa lỗi Mysql Server Has Gone Away Đơn Giản & Hiệu Quả

Tác giả: admin@
23:54 27/01/2022

Trong quá trình làm việc với các thiết bị máy tính, chúng ta có thể sẽ gặp rất nhiều lỗi khác nhau. Nếu không phải dân duyên nghiệp, việc giải quyết, xử lý sẽ gặp không ít khó khăn. Chính vì thế, việc bạn cần làm đó là xem xét từng lỗi với những nguyên nhân khác nhau để có hướng giải quyết phù hợp. Trong trường hợp máy báo lỗi Mysql Server Has Gone Away thì phải làm sao? Sau đây sẽ là những sự lựa chọn dành cho bạn.

Mysql Server Has Gone Away là gì?

Mysql Server Has Gone Away là lỗi thường xuất hiện khi mã nguồn Wordpress khi sử dụng hosting. Lỗi này được hiểu là “bạn mất kết nối với máy chủ trong thời gian truy vấn”. Như vậy, chúng ta không thể kết nối được vào máy chủ cung cấp thông tin nữa. 

Đây là lỗi nằm ở phía server chính vì vậy, nếu chúng ta dùng shared host thì rất khó khắc phục. Vậy phải làm sao nếu gặp phải lỗi Mysql Server Has Gone Away? Hãy cùng tiếp tục theo dõi phần sau của bài viết để có được câu trả lời dành cho mình.

>>> Có thể bạn quan tâm: Name Server là gì? Đặc điểm & Cách đổi NameServer tên miền

Nguyên nhân gây nên lỗi Mysql Server Has Gone Away

Muốn sửa lỗi Mysql Server Has Gone Away thì điều chúng ta cần làm trước hết đó chính là tìm hiểu nguyên nhân gây ra lỗi là gì. Có 7 nguyên nhân chính khiến người dùng gặp phải lỗi này đó chính là:

Server hết thời gian chờ

Server mà chúng ta đang truy cập đã hết thời gian chờ và thực hiện đóng kết nối. Bạn cần phải nhớ rằng mỗi một kết nối mở ra sẽ chỉ giới hạn trong một khoảng thời gian nhất định mà thôi. Chính vì thế, khi vượt quá thời gian này thì máy chủ CSDL ( MySQL ) sẽ tự động đóng kết nối cho dù người dùng có muốn hay không. 

Vì vậy, nếu như mã nguồn của chúng ta mất thời gian xử lý quá lâu và vượt mức cho phép sau đấy bạn truy vấn lại thì rất dễ gặp phải lỗi này. Lý do là vì kết nối tự động khóa và từ chối tất cả các truy vấn có liên quan đến MySQL từ user của bạn.

Truy vấn MySQL lỗi

Nguyên nhân thứ 2 dẫn đến tình trạng Mysql Server Has Gone Away đó là truy vấn MySQL xảy ra lỗi khiến cho MySQL tự đóng kết nối. Cũng có thể là vì người dùng tự đóng kết nối để chạy một truy vấn khác có liên quan đến việc đóng kết nối. Đây là một vấn đề đơn giản.

Người dùng đã nhận timeout từ TCP / IP 

Trong trường hợp, người dùng đã nhận một timeout từ TCP / IP kết nối với khách hàng thì cũng có thể gặp phải lỗi Mysql Server Has Gone Away. Điều này sẽ xảy ra khi chúng ta sử dụng lệnh: mysql_options (…, MYSQL_OPT_READ_TIMEOUT, …) hoặc mysql_options (…, MYSQL_OPT_WRITE_TIMEOUT, …). 

Timeout tự động kết nối lại ở client bị vô hiệu hóa

Khi người dùng gặp một timeout trên máy chủ cũng như các bên khác tự động kết nối lại tại các client bị vô hiệu hóa thì cũng dẫn đến việc mất kết nối với máy chủ trong thời gian truy vấn.

Gửi yêu cầu không đúng đến máy chủ

Khi người dùng gửi một yêu cầu đến máy chủ nhưng không đúng hoặc quá lớn cũng sẽ không được kết nối. Bởi khi mysqld nhận được một gói có nghĩa là quá lớn hoặc sai thì mặc định chúng sẽ đóng kết nối. 

Nếu bạn cần truy vấn lớn khi làm việc với cột BLOB lớn, người dùng có thể tăng giới hạn các truy vấn thông qua việc đặt các giá trị max_allowed_packet tăng lên. Trong số đó có một giá trị mặc định của 1MB. (cấu hình mặc định của shared hosting của Hostvn.net là 256Mb)

INSERT hoặc thay thế một query chèn một nhiều hàng

Đây cũng là một nguyên nhân dẫn đến lỗi kết nối này. Bên cạnh đó, khi một trong những lời truy vấn gửi yêu cầu cho máy chủ bất với số lượng các hàng được lắp vào cũng khiến bạn gặp phải lỗi. Để tránh lỗi, chúng ta nên giảm số lượng hàng được gửi dành cho mỗi INSERT hoặc thay thế.

Mất kết nối khi gửi gói quá tải

Người dùng gửi một gói có dung lượng 16MB trở lên tại các client cũ quá 4.0.8 nhưng máy chủ của bạn là 4.0.8 trở lên thì cũng khiến bạn gặp lỗi Mysql Server Has Gone Away.

Sửa lỗi Mysql Server Has Gone Away Hiệu Quả

Trong phần nguyên nhân xuất hiện lỗi Mysql Server Has Gone, có một vài lỗi đã được chúng tôi đề cập đến cách khắc phục. Nhưng nếu, bạn không biết chính xác nguyên nhân dẫn đến lỗi này là gì thì có thể áp dụng 2 cách sửa dưới đây.

Tăng tạm thời set biến Global MySQL

Cách đầu tiên đó chính là thực hiện tăng giá trị ‘max_allowed_packet‘ của hệ thống bằng cách set biến GLOBAL max_allowed_packet của dịch vụ MySQL mà chúng đang hoạt động. Cách này sẽ không yêu cầu người dùng phải khởi động lại dịch vụ MySQL. Giá trị sau khi được nâng lên sẽ là : 32 x 1024 x 1024

# mysql -u root -p

Enter password:

mysql> SET GLOBAL max_allowed_packet=33554432 
Rồi tiến hành import lại.

>>> Có thể bạn quan tâm: Name Server là gì? Đặc điểm & Cách đổi NameServer tên miền

Cấu hình file dịch vụ MySQL

Cách thứ 2 đó chính là tiến hành thiết lập lại cấu hình trong file /etc/my.cnf. Sau khi thực hiện dịch vụ MySQL dù có khởi động lại cũng sẽ vẫn luôn được set giá trị đúng với con số mà chúng ta mong muốn. Yêu cầu đó là khởi động lại dịch vụ MySQL.

# vi /etc/my.cnf

[mysqld]

max_allowed_packet=32M

...

# /etc/init.d/mysql restart
Trên đây là những thông tin có liên quan đến lỗi Mysql Server Has Gone Away dành cho người dùng đang muốn tìm hiểu. Ghi nhớ cách giải quyết để không gián đoạn công việc của mình nhé.

Liên hệ với chúng tôi để biết thêm thông tin chi tiết về dịch vụ của FPT Smart Cloud

Sửa lỗi Mysql Server Has Gone Away Đơn Giản & Hiệu Quả