После обновления MySQL до 5.7.8-rc и для входа на сервер я получил ошибку:
Table 'performance_schema.session_variables' doesn't exist
Я не могу найти решение для этого. Вы можете помочь?
После обновления MySQL до 5.7.8-rc и для входа на сервер я получил ошибку:
Table 'performance_schema.session_variables' doesn't exist
Я не могу найти решение для этого. Вы можете помочь?
Для меня также работал mysql_upgrade:
# mysql_upgrade -u root -p --force
# systemctl restart mysqld
С уважением, МСЗ.
Мне удалось войти на сервер mysql после запуска команды @robregonm:
mysql_upgrade -u root -p --force
Требуется перезагрузка сервера MySQL.
mysql -u app -p
mysql> set @@global.show_compatibility_56=ON;
по http://bugs.mysql.com/bug.php?id=78159 работал у меня.
Поскольку ни один из ответов, приведенных выше, на самом деле не объясняет, что произошло, я решил присоединиться к этой проблеме и рассказать о ней подробнее.
Да, решение состоит в том, чтобы выполнить команду обновления MySQL следующим образом: mysql_upgrade -u root -p --force
, но что случилось?
Основной причиной этой проблемы является повреждение performance_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 - лучший подход, несмотря на простои. Включение флага - это один из вариантов, но он имеет свои собственные последствия, как уже указывалось в этом потоке.
Оба должны работать, но взвесить последствия и знать свой выбор :)
Выполните следующие действия без -p
:
mysql_upgrade -u root
systemctl restart mysqld
У меня была такая же проблема, и она работает!
Как и шестьдесят четыре вопроса, если ваш пользователь root mysql выглядит неправильно сконфигурированным, попробуйте установить расширение конфигуратора из официального источника mysql:
https://dev.mysql.com/downloads/repo/apt/
Это поможет вам установить новый пароль пользователя root.
Обязательно обновите свой репозиторий (debian/ubuntu):
apt-get update
Для моей системы проблема заключалась в том, что у меня все еще был установлен Mysql 5.6, и поэтому вызывался файл mysql_upgrade.exe из этой установки вместо того, который использовался для 5.7. Перейдите в C:\Program Files\MySQL\MySQL Server 5.7\bin
и запустите .\mysql_upgrade.exe -u root
Если при использовании команды mysql_upgrade -u root -p --force
вы получаете эту ошибку:
Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13
просто добавьте sudo
перед командой. Это сработало для меня, и я решил свою проблему. Итак, это: sudo mysql_upgrade -u root -p --force
:)
иногда mysql_upgrade -u root -p --force
недостаточно,
обратитесь к этому вопросу: Таблица "performance_schema.session_variables" не существует
в соответствии с ним:
cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
mysql_upgrade -u root -p --force