Оскільки жодна з вищезгаданих відповідей насправді не пояснює, що сталося, я вирішив задзвонити та донести ще деякі деталі до цього питання.
Так, рішення полягає у виконанні команди MySQL Upgrade наступним чином: mysql_upgrade -u root -p --force
але що сталося?
Першопричиною цього питання є корупція performance_schema
, яку можуть спричинити:
- Органічна корупція (томи, які стають кабумом, помилка двигуна, проблема з драйвером ядра тощо)
- Пошкодження під час mysql Patch (не чутно, щоб це сталося під час роботи з патчем mysql, спеціально для великих оновлень версій)
- Проста "drop_dutform_schema", очевидно, спричинить цю проблему, і вона проявить ті самі симптоми, як ніби вона була пошкоджена
Ця проблема, можливо, була присутня у вашій базі даних ще до виправлення, але те, що трапилося на MySQL 5.7.8, зокрема, полягає в тому, що прапор show_compatibility_56
змінив своє значення за замовчуванням з перетвореного ON
за замовчуванням наOFF
. Цей прапор керує тим, як двигун веде себе за запитами щодо встановлення та зчитування змінних (сесійних та глобальних) на різних версіях MySQL.
Оскільки MySQL 5.7+ почав читати та зберігати ці змінні, performance_schema
а не увімкнути information_schema
, цей прапор було введено як ON
для перших випусків, щоб зменшити радіус вибуху цієї зміни та дати користувачам інформацію про зміни та звикнути до неї.
Гаразд, але чому з’єднання не працює? Оскільки залежно від драйвера, який ви використовуєте (та його конфігурації), він може закінчити виконання команд для кожного нового з'єднання, ініційованого до бази даних (наприклад show variables
, наприклад). Тому що одна з цих команд може спробувати отримати доступ зіпсованимperformance_schema
, все з'єднання припиняється, перш ніж повністю ініціюватися.
Отже, підсумовуючи це, ви, можливо, (неможливо сказати зараз), performance_schema
перед тим, як виправити помилку, були або відсутні, або зіпсовані. Потім виправлення до 5.7.8 змусило двигун зчитувати ваші змінні performance_schema
(замість того information_schema
, звідки він його читав через поворот прапора ON
). Оскільки performance_schema
пошкоджено, з'єднання виходять з ладу.
Запуск оновлення MySQL є найкращим підходом, незважаючи на час простою. Увімкнення прапора є одним із варіантів, але він має власний набір наслідків, як це вже було зазначено на цій темі.
Обоє повинні працювати, але зважте наслідки і знайте свій вибір :)
5.7.8-rc
версії та відновлення з повної резервної копії БД.