Vì không có câu trả lời nào ở trên thực sự giải thích những gì đã xảy ra, tôi quyết định bấm nút và đưa thêm một số chi tiết cho vấn đề này.
Có, giải pháp là chạy lệnh Nâng cấp MySQL, như sau : mysql_upgrade -u root -p --force
, nhưng chuyện gì đã xảy ra?
Nguyên nhân sâu xa của vấn đề này là do tham nhũng performance_schema
, có thể do:
- Tham nhũng hữu cơ (khối lượng kaboom, lỗi động cơ, vấn đề trình điều khiển hạt nhân, v.v.)
- Tham nhũng trong bản vá mysql (không có gì lạ khi điều này xảy ra trong bản vá mysql, đặc biệt đối với các nâng cấp phiên bản chính)
- Một "thả cơ sở dữ liệu Performance_schema" đơn giản rõ ràng sẽ gây ra vấn đề này và nó sẽ xuất hiện các triệu chứng giống như khi nó bị hỏng
Vấn đề này có thể đã xuất hiện trên cơ sở dữ liệu của bạn ngay cả trước khi vá, nhưng điều xảy ra trên MySQL 5.7.8 cụ thể là cờ show_compatibility_56
đã thay đổi giá trị mặc định từ bị biến thành ON
mặc định, thành OFF
. Cờ này kiểm soát cách động cơ hoạt động trên các truy vấn để cài đặt và đọc các biến (phiên và toàn cầu) trên các Phiên bản MySQL khác nhau.
Do MySQL 5.7+ bắt đầu đọc và lưu trữ các biến này performance_schema
thay vì bật information_schema
, cờ này được giới thiệu như là ON
bản phát hành đầu tiên để giảm bán kính nổ của thay đổi này và để người dùng biết về thay đổi và làm quen với nó.
OK, nhưng tại sao kết nối không thành công? Bởi vì tùy thuộc vào trình điều khiển bạn đang sử dụng (và cấu hình của nó), nó có thể sẽ chạy các lệnh cho mọi kết nối mới được khởi tạo vào cơ sở dữ liệu ( show variables
ví dụ như , chẳng hạn). Vì một trong những lệnh này có thể cố gắng truy cập vào một lỗi bị hỏng performance_schema
, toàn bộ kết nối sẽ hủy bỏ trước khi được khởi tạo hoàn toàn.
Vì vậy, tóm lại, bạn có thể (không thể nói bây giờ) đã performance_schema
bị thiếu hoặc bị hỏng trước khi vá. Bản vá đến 5.7.8 sau đó buộc công cụ phải đọc các biến của bạn performance_schema
(thay vì information_schema
, nó đang đọc từ đâu vì cờ được bật ON
). Kể từ khi performance_schema
bị hỏng, các kết nối không thành công.
Chạy nâng cấp MySQL là cách tiếp cận tốt nhất, bất chấp thời gian chết. Bật cờ là một tùy chọn, nhưng nó đi kèm với tập hợp hàm ý riêng của nó như đã được chỉ ra trên chủ đề này.
Cả hai nên làm việc, nhưng cân nhắc hậu quả và biết lựa chọn của bạn :)
5.7.8-rc
phiên bản và khôi phục từ bản sao lưu đầy đủ DB.