[HOT] Cách sửa lỗi MySQL Server has gone away hiệu quả 2024

Khi sử dụng MySQL, chúng ta có thể gặp phải nhiều lỗi khác nhau. Trong đó, MySQL Server Has Gone Away là một trong những lỗi thường gặp. Để khắc phục lỗi này, bạn cần tìm hiểu chính xác nguyên nhân để đưa ra hướng giải quyết phù hợp. Trong bài viết sau đây, VinaHost sẽ liệt kê những nguyên nhân chính cũng như cách khắc phục lỗi MySQL Server Has Gone Away nhanh chóng và chính xác.

1. MySQL Server has gone away là gì?

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở và miễn phí, được phát triển bởi Oracle Corporation. MySQL sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) để truy vấn dữ liệu. SQL là một ngôn ngữ chuẩn được sử dụng bởi hầu hết các hệ quản trị cơ sở dữ liệu quan hệ.

MySQL là hệ quản trị cơ sở dữ liệu phổ biến nhất thế giới, được sử dụng bởi hàng triệu người dùng trên toàn cầu vì có hiệu suất cao, khả năng mở rộng lớn để đáp ứng nhu cầu của các ứng dụng lớn và tích hợp nhiều tính năng bảo mật. Ngoài ra, MySQL còn có giao diện thân thiện với người dùng, giúp bạn dễ dàng quản lý cơ sở dữ liệu của mình.

MySQL Server has gone away là một thông báo lỗi phổ biến trong MySQL cho biết sự mất kết nối giữa client và máy chủ MySQL trong quá trình truy vấn.

Điều này có nghĩa là yêu cầu của bạn hoặc dữ liệu bạn đang cố gửi hoặc nhận đã không đến được máy chủ MySQL, hoặc máy chủ MySQL đã ngừng hoạt động trước khi hoàn thành truy vấn. 

mysql server has gone away
Lỗi MySQL Server Has Gone Away

Lỗi này khiến người dùng không thể truy cập được thông tin từ máy chủ. Lỗi Mysql Server Has Gone Away là một lỗi thường gặp khi sử dụng mã nguồn WordPress trên hosting. 

Xem thêm: MySQL là gì | Cài đặt MySQL trên Windows & Server/VPS

2. Nguyên nhân dẫn đến lỗi MySQL Server has gone away

Dưới đây là những nguyên nhân phổ biến gây ra lỗi MySQL Server has gone away. Tùy vào từng nguyên nhân cụ thể mà bạn sẽ có những cách khắc phục khác nhau.

2.1. Server hết thời gian chờ 

Server MySQL sẽ tự động đóng kết nối nếu kết nối đó không hoạt động trong một khoảng thời gian nhất định. Khoảng thời gian này được gọi là thời gian chờ (timeout).

Nếu mã nguồn của bạn mất quá nhiều thời gian để xử lý một truy vấn, kết nối đó có thể sẽ hết thời gian chờ và bị đóng. Khi điều này xảy ra, bạn sẽ nhận được phản hồi lỗi Mysql Server Has Gone Away. Để khắc phục lỗi này, bạn có thể tăng thời gian chờ kết nối. Bạn có thể thực hiện việc này bằng cách thay đổi giá trị của biến wait_timeout trong file cấu hình my.cnf của máy chủ MySQL. 

Ngoài ra, bạn cũng có thể phân tích mã nguồn để tìm ra nguyên nhân khiến mã nguồn mất thời gian xử lý quá lâu. Tiếp theo, bạn có thể khắc phục nguyên nhân đó để tránh lỗi MySQL Server has gone away xảy ra.

2.2. Lỗi truy vấn MySQL lỗi

Thêm một nguyên nhân khác dẫn đến lỗi Mysql Server Has Gone Away là do truy vấn MySQL có vấn đề, cụ thể như sau:

  • Kích thước truy vấn quá lớn: Khi truy vấn trả về một lượng lớn dữ liệu, kích thước gói tin có thể vượt quá giới hạn được cấu hình trên máy chủ MySQL. Điều này có thể xảy ra khi sử dụng các câu lệnh SELECT hoặc INSERT với dữ liệu lớn. Để khắc phục, bạn có thể cần tăng giới hạn kích thước gói tin bằng cách cấu hình tham số max_allowed_packet trên máy chủ MySQL.
  • Lỗi trong truy vấn: Nếu truy vấn chứa lỗi cú pháp hoặc lỗi logic, máy chủ MySQL có thể đóng kết nối. Để khắc phục, hãy đảm bảo truy vấn của bạn được viết chính xác và tuân thủ ngữ cảnh cú pháp và quy tắc của MySQL.
  • Lỗi kết nối mạng: Mất kết nối mạng giữa ứng dụng và máy chủ MySQL có thể dẫn đến lỗi này. Để khắc phục, hãy kiểm tra đường truyền mạng và đảm bảo rằng không có sự cố mạng gây ra mất kết nối.
  • Ngoài ra, lỗi này cũng có thể xảy ra nếu người dùng tự đóng kết nối để chạy một truy vấn khác.

2.3. Timeout từ TCP / IP

Lỗi MySQL Server Has Gone Away có thể xảy ra khi kết nối TCP/IP giữa ứng dụng và máy chủ MySQL bị mất hoặc thời gian chờ vượt quá giới hạn.

Cụ thể, lỗi này có thể xảy ra do các nguyên nhân sau:

  • Hết thời gian chờ kết nối (connection timeout): Nếu thời gian chờ kết nối đã hết và không có phản hồi từ máy chủ MySQL, lỗi này có thể xảy ra. Điều này có thể do mạng chậm, máy chủ MySQL đang bận hoặc cấu hình timeout quá thấp. Để khắc phục, bạn có thể thay đổi cấu hình timeout để tăng thời gian chờ kết nối.
  • Vượt quá thời gian chờ truy vấn (query timeout): Khi thực hiện một truy vấn MySQL lâu dài, thời gian chờ truy vấn có thể vượt quá giới hạn và dẫn đến lỗi này. Để khắc phục, bạn có thể tăng thời gian chờ truy vấn bằng cách cấu hình tham số wait_timeout trên máy chủ MySQL.
  • Lỗi mạng: Nếu có sự cố về mạng như mất kết nối hoặc mạng chậm, lỗi này cũng có thể xảy ra. Để khắc phục, hãy kiểm tra kết nối mạng và đảm bảo rằng không có vấn đề về đường truyền mạng.
mysql server has gone away
Lỗi MySQL Server Has Gone Away có thể xảy ra khi kết nối TCP/IP giữa ứng dụng và máy chủ MySQL bị mất

Xem thêm: PHPMyAdmin là gì | Cài đặt & Sử dụng PHPMyAdmin A-Z

2.4. Tự động kết nối các client bị vô hiệu hóa

Khi kết nối giữa client và máy chủ MySQL bị ngắt hoặc mất kết nối trong thời gian truy vấn cũng có thể gây ra lỗi MySQL Server Has Gone Away. Theo đó, khi client không gửi yêu cầu hoặc không nhận phản hồi từ máy chủ MySQL trong khoảng thời gian timeout được cấu hình, máy chủ MySQL sẽ đóng kết nối với client và gửi thông báo lỗi MySQL Server Has Gone Away.

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

Nếu bạn gửi yêu cầu không đúng đến máy chủ MySQL, hệ thống sẽ báo lỗi MySQL Server Has Gone Away. Ví dụ như:

  • Cú pháp truy vấn không chính xác: Nếu truy vấn của bạn có cú pháp không chính xác, máy chủ MySQL sẽ không thể hiểu và xử lý truy vấn đó. 
  • Sai kiểu dữ liệu: Nếu truy vấn của bạn sử dụng kiểu dữ liệu không phù hợp, máy chủ MySQL cũng có thể gặp lỗi. Điều này có thể xảy ra nếu bạn cố gắng lưu trữ một giá trị không phải là số vào một cột số, hoặc ngược lại.
  • Không tuân thủ ngữ cảnh của MySQL: MySQL có một số quy tắc ngữ cảnh mà các truy vấn phải tuân theo. Nếu truy vấn của bạn không tuân thủ các quy tắc này, máy chủ MySQL có thể gặp lỗi. 

Để khắc phục lỗi MySQL Server Has Gone Away do gửi yêu cầu đến máy chủ không đúng, bạn cần đảm bảo rằng truy vấn của mình chính xác về mặt cú pháp, sử dụng kiểu dữ liệu phù hợp và tuân thủ ngữ cảnh của MySQL.

2.6. Gửi gói quá tải khiến MySQL Server has gone away

Lỗi MySQL Server Has Gone Away có thể xảy ra khi bạn gửi gói tin có kích thước quá lớn đến máy chủ MySQL. MySQL có một giới hạn kích thước gói tin mặc định là 16MB. Nếu bạn gửi một gói tin có kích thước lớn hơn 16MB, máy chủ có thể đóng kết nối. Do đó, để tránh lỗi này, bạn cần đảm bảo rằng gói tin của mình có kích thước nhỏ hơn giới hạn kích thước được cấu hình trên máy chủ.

Ngoài ra, bạn cũng có thể nâng cấp lên phiên bản mới hơn để hỗ trợ gói tin có kích thước lớn hơn. Đối với các hosting shared, giá trị mặc định của giới hạn kích thước gói tin là 16MB. Nếu bạn cần gửi các gói tin lớn hơn, bạn có thể yêu cầu nhà cung cấp hosting tăng giá trị này. 

mysql server has gone away
Lỗi MySQL Server Has Gone Away có thể xảy ra khi bạn gửi gói tin có kích thước quá lớn đến máy chủ MySQL

2.7. Insert hoặc thay thế chèn nhiều hàng 

Thêm một nguyên nhân khác là do bạn gửi quá nhiều hàng trong một truy vấn INSERT hoặc UPDATE. Để tránh lỗi này, bạn nên giảm số lượng hàng được gửi trong mỗi truy vấn INSERT hoặc UPDATE. Bạn có thể chia truy vấn thành nhiều truy vấn nhỏ hơn, mỗi truy vấn chỉ xử lý một số lượng hàng nhất định.

Ví dụ, nếu bạn cần thêm 1.000 hàng vào một bảng, thay vì sử dụng một truy vấn INSERT với 1.000 hàng, bạn có thể chia thành 10 truy vấn INSERT, mỗi truy vấn thêm 100 hàng. Cách này sẽ giúp giảm tải cho máy chủ MySQL và hạn chế khả năng xảy ra lỗi MySQL Server Has Gone Away.

Xem thêm: SQL Server là gì? | Hướng dẫn Tải & Cài đặt SQL Server

3. Cách sửa lỗi MySQL Server has gone away hiệu quả 

Nếu bạn không biết chính xác nguyên nhân gây ra lỗi MySQL Server Has Gone Away, bạn có thể áp dụng một trong hai cách khắc phục dưới đây.

3.1. Set biến Global MySQL

Để khắc phục lỗi MySQL Server Has Gone Away do gói tin quá lớn, bạn có thể tăng tạm thời giá trị biến toàn cục trong MySQL như set biến GLOBAL max_allowed_packet.

Cụ thể, bạn có thể thực hiện theo các bước sau:

Bước 1: Mở terminal và đăng nhập vào MySQL với quyền root.

Bước 2: Gõ lệnh sau:

# mysql -u root -p

Enter password:

mysql> SET GLOBAL max_allowed_packet=33554432 

Bước 3: Nhấn Enter.

Giá trị 33554432 tương đương với 32 MB. Bạn có thể tăng giá trị này lên nếu cần.

Sau khi thực hiện các bước trên, bạn có thể tiến hành import lại dữ liệu.

3.2. Thiết lập file trong dịch vụ MySQL

Để khắc phục lỗi MySQL Server Has Gone Away do gói tin quá lớn một cách vĩnh viễn, bạn có thể thiết lập lại cấu hình trong file /etc/my.cnf. Các bước thực hiện như sau:

  • Bước 1: Mở file /etc/my.cnf bằng trình soạn thảo văn bản.
  • Bước 2: Tìm đến mục [mysqld].
  • Bước 3: Thêm dòng sau vào cuối mục [mysqld]: max_allowed_packet=32M
  • Bước 4: Lưu và đóng file /etc/my.cnf.
  • Bước 5: Khởi động lại dịch vụ MySQL bằng lệnh sau: /etc/init.d/mysql restart

Giá trị 32M tương đương với 32 MB. Bạn có thể thay đổi giá trị này tùy theo nhu cầu của mình.

4. Tổng kết 

Lỗi MySQL Server Has Gone Away là một lỗi phổ biến trong MySQL mà người dùng có thể gặp phải. Để tránh lỗi này, bạn cần cẩn thận khi thực hiện các truy vấn MySQL, đảm bảo cú pháp và kiểu dữ liệu chính xác. Ngoài ra, bạn cũng nên lưu lại 2 cách khắc phục lỗi nhanh nhất mà chúng tôi đã chia sẻ bên trên để xử lý tình huống kịp thời. Bạn có thể xem thêm các bài viết thú vị khác tại đây và đừng ngại ngần liên hệ với VinaHost nếu cần hỗ trợ nhé!

Xem thêm:

[Tìm Hiểu] Big Data là gì | Tổng hợp thông tin về dữ liệu lớn

[Data là gì] | Vai trò & Ứng dụng dữ liệu cho doanh nghiệp

Cách sửa lỗi Server IP address could not be found hiệu quả 100%

Hướng dẫn cách sửa lỗi Server Execution Failed hiệu quả 100%

Đánh giá
5/5 - (5 bình chọn)
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Phản hồi nội tuyến
    Xem tất cả bình luận
    Tổng lượt truy cập: lượt xem