banner-news

Trong bài này

    Lỗi MySQL Server Has Gone Away: 06 nguyên nhân và cách sửa

    16/03/2023

    MySQL Server Has Gone Away là lỗi phổ biến thường xảy ra khi làm việc với máy tính. Vậy, lỗi này là lỗi gì và có nguyên nhân do đâu? Hiểu rõ các vấn đề này, bạn mới có thể tìm cách giải quyết phù hợp. Trong bài viết dưới đây, cùng tìm hiểu về nguyên nhân gây ra lỗi MySQL Server Has Gone Away và những cách sửa lỗi nhanh chóng nhất.

    Lỗi MySQL Server Has Gone Away là gì?

    MySQL Server Has Gone Away là lỗi thường gặp khi dùng Hosting trên mã nguồn Wordpress. Bạn có thể hiểu đây là lỗi mất kết nối với Server trong thời gian truy vấn, khiến máy tính không thể truy cập vào Server để lấy thông tin mình cần.

    Khi thấy lỗi MySQL Server Has Gone Away, đồng nghĩa với Server đang hết thời gian chờ kết nối. Thời gian chờ mặc định này trong MySQL là 8 giờ, sau thời gian này sẽ tự động ngắt kết nối. Tuy nhiên, thời gian này có thể được thiết lập lại, tùy theo yêu cầu của các nhà phát triển, Server hoặc DBA.

    Đây là lỗi xảy ra chủ yếu do Server, nên nếu doanh nghiệp dùng dịch vụ Shared Hosting thì việc xử lý rất khó khăn. MySQL Server Has Gone Away có nhiều hình thức khác nhau, trong đó, lỗi 2006 MySQL Server Has Gone Away khá phổ biến. Nguyên nhân xuất hiện lỗi này chủ yếu là do dung lượng lưu trữ của Database quá lớn, vượt quá hạn mức có thể của MySQL nên hệ thống không thể giải quyết được. 

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

    Một số nguyên nhân chính gây ra lỗi MySQL Server Has Gone Away bao gồm:

    1. Server hết thời gian chờ: Server mà máy tính truy cập đã hết thời gian chờ và tự động ngắt kết nối, dù chúng ta muốn hay không. Do đó, nếu mã nguồn máy tính xử lý quá lâu vượt hạn mức thì bạn sẽ dễ gặp phải lỗi này.
    2. Lỗi truy vấn MySQL: Việc MySQL lỗi truy vấn cũng khiến MySQL chủ động ngắt kết nối, khiến chúng ta không truy cập vào được. Lỗi này cũng xảy ra khi người dùng tự ngắt kết nối để chạy một truy vấn khác. Việc truy vấn MySQL bị lỗi cũng có thể do nhiều nguyên nhân như:
    • Kích thước truy vấn quá lớn, vượt quá hạn mức giới hạn mà máy chủ MySQL có thể phục vụ. Chẳng hạn, bạn sử dụng các câu lệnh Select với số lượng dữ liệu được chọn quá lớn.
    • Cú pháp truy vấn MySQL bị lỗi hoặc lỗi về logic, khiến MySQL Server tự động ngắt kết nối. Do đó, bạn cần kiểm tra kỹ truy vấn MySQL có chính xác chưa, có bị lỗi về ngữ cảnh, cú pháp, lỗi chính tả hoặc lỗi quy tắc của MySQL không.
    • Việc mất kết nối mạng trên máy tính cũng có thể là nguyên nhân gây ra tình trạng bị lỗi MySQL Server Has Gone Away. Bạn cần kiểm tra đường truyền mạng để đảm bảo không bị bất kỳ sự cố nào về mạng.
    1. Timeout từ giao thức TCP/IP: Khi xuất hiện tình trạng Timeout từ TCP/IP cũng dẫn đến tình trạng bị lỗi Mysql Server Has Gone Away. Lỗi này cũng có thể xảy ra khi chúng ta sử dụng các dòng lệnh mysql_options (…, MYSQL_OPT_READ_TIMEOUT, …).
    2. Client vô hiệu hóa việc kết nối lại sau khi Timeout: Sau khi xảy ra Timeout, thông thường các Server hoặc các bên sẽ tự động kết nối lại. Tuy nhiên, nếu quá trình này bị Client vô hiệu hóa thì việc mất kết nối với Server vẫn xảy ra như cũ.
    3. Yêu cầu gửi tới Server không hợp lệ: Khi người dùng gửi một yêu cầu không đúng hoặc một yêu cầu quá lớn, việc kết nối cũng không thể diễn ra, bởi vì khi đó MySQL sẽ tự động ngắt kết nối. Nếu cần truy vấn lớn (chẳng hạn như khi làm việc với cột BLOB), bạn có thể tăng giới hạn truy vấn của mình thông qua việc tăng giá trị max_allowed_packet.

    Cách sửa lỗi MySQL Server Has Gone Away

    Ở phần trên, ở một số nguyên nhân, chúng tôi đã đề cập đến giải pháp khắc phục. Tuy nhiên, nếu bạn không biết nguyên nhân gây ra lỗi MySQL Server Has Gone Away là gì thì bạn có thể sử dụng những cách xử lý sau:

    Cách 1: Tăng set biến Global MySQL

    Cách đầu tiên bạn cần thử là tăng giá trị của biến ‘max_allowed_packet‘ trong hệ thống, bằng cách set biến Global trong dịch vụ MySQL đang hoạt động. Với phương pháp này, bạn không cần phải khởi động lại MySQL đang chạy. 

    Sau khi tăng set biến Global MySQL, giá trị của chúng sẽ như sau:

    32 x 1024 x 1024
    
    
    # mysql -u root -p
    
    
    Enter password:
    
    
    mysql> SET GLOBAL max_allowed_packet=33554432 

    Sau khi tăng set biến, bạn tiến hành import lại và sử dụng bình thường.

    Cách 2: Cấu hình lại tập tin dịch vụ MySQL

    Cách thứ hai bạn nên thử là cấu hình lại file /etc/my.cnf. Sau khi thực hiện thao tác này xong, dù dịch vụ MySQL có khởi động lại thì chúng vẫn luôn set theo đúng với con số và giá trị mà chúng ta muốn. Với phương pháp này, chúng ta cần phải khởi động lại MySQL.

    Bạn tham khảo cách cấu hình tập tin MySQL như sau:

    # vi /etc/my.cnf
    
    
    [mysqld]
    
    
    max_allowed_packet=32M
    
    
    ...
    
    
    # /etc/init.d/mysql restart

    Nhìn chung, Mysql Server Has Gone Away là một trong các lỗi MySQL phổ biến và chúng ta rất dễ dàng gặp phải. Nếu gặp các lỗi này, bạn hãy thực hiện theo đúng những cách khắc phục trên mà CMC Cloud đã chia sẻ để xử lý kịp thời nhất. Hy vọng bài viết trên đã mang lại các kiến thức hữu ích và phù hợp với bạn, đừng quên theo dõi Blog công nghệ tại CMC Cloud để cập nhật thêm các kiến thức công nghệ mới nhất.

    CMC Cloud - Giải pháp Điện toán đám mây Toàn diện & Linh hoạt nhất. Cho phép tùy biến sử dụng và quản trị 25+ dịch vụ


      content-banner
      News Detail - Footer Email MKT

      Đăng ký nhận thông tin

      Bạn muốn cập nhật thông tin mới nhất từ CMC Cloud?! Hãy để lại địa chỉ email của bạn ngay để nhận những bản tin bổ ích

      back to top

      logo

      © 2023, CMC Cloud. All rights reserved.

      Business Registration Certificate

      Giấy ĐKKD: 0102900049. Nơi cấp: Sở Kế hoạch & Đầu tư Thành phố Hà Nội

      Chịu trách nhiệm nội dung: Đặng Tùng Sơn