Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP Mysql PDO:Lỗi chung:Máy chủ MySQL 2006 đã biến mất

Một số lý do phổ biến khác dẫn đến lỗi máy chủ MySQL đã biến mất là:

  • Bạn (hoặc quản trị viên db) đã hủy chuỗi đang chạy bằng câu lệnh KILL hoặc lệnh hủy mysqladmin.

  • Bạn đã cố gắng chạy một truy vấn sau khi đóng kết nối với máy chủ. Điều này chỉ ra một lỗi logic trong ứng dụng cần được sửa chữa.

  • Ứng dụng khách 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ới máy chủ MySQL từ máy chủ đó.

  • Bạn đã hết thời gian chờ từ kết nối TCP / IP ở phía máy khách. Điều này có thể xảy ra nếu bạn đang sử dụng các lệnh:mysql_options (..., MYSQL_OPT_READ_TIMEOUT, ...) hoặc mysql_options (..., MYSQL_OPT_WRITE_TIMEOUT, ...). Trong trường hợp này, việc tăng thời gian chờ có thể giúp giải quyết vấn đề.

  • Bạn đã gặp sự cố hết thời gian chờ ở phía máy chủ và kết nối lại tự động trong máy khách bị vô hiệu hóa (cờ kết nối lại trong cấu trúc MYSQL bằng 0).

  • Bạn đang sử dụng một máy khách Windows và máy chủ đã ngắt kết nối (có thể là do wait_timeout đã hết hạn) trước khi lệnh được đưa ra.

  • Vấn đề trên Windows là trong một số trường hợp, MySQL không gặp lỗi từ HĐH khi ghi vào kết nối TCP / IP tới máy chủ, nhưng lại gặp lỗi khi cố đọc câu trả lời từ kết nối.

  • Giải pháp cho điều này là thực hiện mysql_ping () trên kết nối nếu đã có một thời gian dài kể từ truy vấn cuối cùng (đây là những gì Connector / ODBC thực hiện) hoặc đặt wait_timeout trên máy chủ mysqld cao đến mức nó trong thực tế không bao giờ xảy ra. ra ngoài.

  • Bạn cũng có thể gặp những lỗi này nếu bạn gửi một truy vấn đến máy chủ không chính xác hoặc quá lớn. Nếu mysqld nhận được một gói quá lớn hoặc không theo thứ tự, nó sẽ giả định rằng có sự cố xảy ra với máy khách và đóng kết nối. Nếu bạn cần các truy vấn lớn (ví dụ:nếu bạn đang làm việc với các cột BLOB lớn), bạn có thể tăng giới hạn truy vấn bằng cách đặt biến max_allowed_packet của máy chủ, có giá trị mặc định là 4MB. Bạn cũng có thể cần tăng kích thước gói tối đa ở đầu máy khách. Thông tin thêm về cài đặt kích thước gói được cung cấp trong Phần B.5.2.10, “Gói quá lớn”.

  • Câu lệnh INSERT hoặc REPLACE chèn nhiều hàng cũng có thể gây ra các loại lỗi này. Một trong các câu lệnh này sẽ gửi một yêu cầu đến máy chủ bất kể số hàng sẽ được chèn vào; do đó, bạn thường có thể tránh được lỗi bằng cách giảm số hàng được gửi trên mỗi INSERT hoặc REPLACE.

  • Bạn cũng nhận được kết nối bị mất nếu bạn đang gửi một gói 16MB hoặc lớn hơn nếu máy khách của bạn cũ hơn 4.0.8 và máy chủ của bạn là 4.0.8 trở lên hoặc ngược lại.

  • Cũng có thể gặp lỗi này nếu tra cứu tên máy chủ không thành công (ví dụ:nếu máy chủ DNS mà máy chủ hoặc mạng của bạn dựa vào bị lỗi). Điều này là do MySQL phụ thuộc vào hệ thống máy chủ để phân giải tên, nhưng không có cách nào để biết liệu nó có hoạt động hay không — theo quan điểm của MySQL, vấn đề không thể phân biệt được với bất kỳ thời gian chờ mạng nào khác.

  • Bạn cũng có thể thấy máy chủ MySQL đã biến mất nếu MySQL được khởi động với tùy chọn --skip-networking.

  • Một sự cố mạng khác có thể gây ra lỗi này xảy ra nếu cổng MySQL (mặc định 3306) bị tường lửa của bạn chặn, do đó ngăn chặn bất kỳ kết nối nào với máy chủ MySQL.

  • Bạn cũng có thể gặp lỗi này với các ứng dụng rẽ nhánh xử lý con, tất cả đều cố gắng sử dụng cùng một kết nối với máy chủ MySQL. Điều này có thể tránh được bằng cách sử dụng một kết nối riêng cho từng quy trình con.

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

Kiểm tra liên kết này: Gone Away




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL dynamic-pivot

  2. Câu lệnh MySQL PREPARE trong các thủ tục được lưu trữ

  3. Xóa Doctrine QueryBuilder với các phép nối

  4. Kết nối trái điều kiện ON VÀ cú pháp điều kiện khác trong Doctrine

  5. Làm cách nào để thay đổi giá trị mặc định của cột bảng mysql?