Схема производительности стола.переменные сеанса ' не существует



после обновления MySQL до 5.7.8-rc
и при входе на сервер я получил ошибку:



Table 'performance_schema.session_variables' doesn't exist


Я не могу найти любое решение для этого. Вы можете помочь ?

608   9  

9 ответов:

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, что может быть вызвано:

  • органическая коррупция (Тома идут kaboom, ошибка двигателя, проблема драйвера ядра и т. д.)
  • коррупция во время исправления mysql (это не неслыханно, чтобы это произошло во время исправления mysql, особенно для основных обновлений версии)
  • простой "drop database performance_schema", очевидно, вызовет эту проблему, и он будет представлять те же симптомы, как если бы он был поврежден

эта проблема, возможно, присутствовала в вашей базе данных еще до патча, но то, что произошло на MySQL 5.7.8, в частности, это флаг show_compatibility_56 изменить это значение по умолчанию при ON по умолчанию OFF. Этот флаг управляет тем, как движок ведет себя на запросах для установки и чтения переменных (сеансовых и глобальных) на различных версиях MySQL.

потому что MySQL 5.7+ начал читать и хранить эти переменные на performance_schema вместо on information_schema этот флаг был введен в качестве ON для первых релизов, чтобы уменьшить радиус взрыва этого изменения и дать пользователям знать об изменении и привыкнуть к нему.

хорошо, но почему соединение потерпеть неудачу? Поскольку в зависимости от используемого драйвера (и его конфигурации) он может запускать команды для каждого нового подключения, инициированного к базе данных (например,show variables, например). Потому что одна из этих команд может попытаться получить доступ к поврежденному performance_schema, все соединение прерывается до полной инициализации.

Итак, вкратце, вы мая (сейчас невозможно сказать) были performance_schema либо отсутствует, либо поврежден перед исправлением. Затем Патч до 5.7.8 заставил двигатель читать ваши переменные из performance_schema (вместо information_schema, где он читал его из-за того, что флаг был повернут ON). Так как performance_schema поврежден, соединения не работают.

запуск обновления MySQL является лучшим подходом, несмотря на время простоя. Включение флага - это один из вариантов, но он поставляется с собственным набором последствий, как уже указывалось в этой теме.

оба должны работать, но взвешивать последствия и знать ваш выбор :)

выполните следующие действия без -p:

  1. mysql_upgrade -u root
  2. systemctl restart mysqld

у меня была та же проблема и это работает!

как вопрос sixty4bit, если ваш пользователь MySQL root выглядит неправильно настроенным, попробуйте установить расширение конфигуратора из официального источника 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 на самом деле недостаточно,

пожалуйста, обратитесь к этому вопросу : стол '.session_variables ' не существует

согласно ему:

  1. открыть cmd
  2. cd [installation_path]\eds-binaries\dbserver\mysql5711x86x160420141510\bin
  3. mysql_upgrade -u root -p --force

Comments

    Ничего не найдено.