Я обновил MySQL до версии 5.6 с 5.5, и теперь при запуске мои журналы завалены такими сообщениями.
Я нашел здесь возможное решение, но оно не кажется официальным. http://forums.mysql.com/read.php?22,578559,579891#msg-579891
2013-12-06 21:08:00 7f87b1d26700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-12-06 21:08:00 7f87b1d26700 InnoDB: Recalculation of persistent statistics requested for table "drupal"."sessions" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.
2013-12-06 21:08:07 7f903c09c700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
Какие-нибудь официальные решения или 100% исправления?
mysql_upgrade -u root -p --force && systemctl restart mysqld
обновляет схему mysql и все базы данных, решая эту проблемуОтветы:
Ранее я обращался к этой проблеме в: Не удается открыть таблицу mysql / innodb_index_stats
Эти таблицы создаются для вас при установке MySQL 5.6. Однако обновление с MySQL 5.5 не вызывает создание этих таблиц. Вот сценарии для их создания вручную:
innodb_index_stats
innodb_table_stats
slave_master_info
slave_relay_log_info
slave_worker_info
АЛЬТЕРНАТИВА
Другой обходной путь - создание сценария из экземпляра MySQL 5.6.
Шаг 01 : Перейдите на сервер БД под управлением MySQL 5.6 или установите MySQL 5.6 на тестовом компьютере.
Шаг 02 : mysqldump эти 5 таблиц в текстовый файл
Затем вы можете запустить
InnoDB_MySQL_Tables.sql
на любом сервере БД под управлением MySQL 5.5 перед обновлением.источник
cat /usr/share/mysql/mysql_system_tables.sql | mysql -uroot -p mysql
ibdata1
файл. MySQL не создавал заново эти таблицы при запуске, и мне пришлось вручную перемещать файлы, представляющие таблицы, из каталога данных MySQL, чтобы использовать приведенныеCREATE
выше операторы (DROP TABLE
не работало).Ответ Роландо работал для меня с некоторыми дополнениями. У меня была та же проблема, с этими 5 таблицами, отображаемыми через SHOW TABLES, но SELECT или другие операции с таблицей привели к тому, что таблица не найдена.
Чтобы решить проблему, используя ответ Роландо, мне нужно было:
DROP TABLE <tablename>
- все 5 столовВ файловой системе удалите оставшиеся файлы .ibd (файлы .frm были удалены с помощью
DROP TABLE
)Затем я остановился и запустил экземпляр mysqld (не знаю, был ли он нужен - сделал меня счастливым)
В
CREATE TABLE
заявлении Роландо предоставляемом побежало без проблем.источник
DROP TABLE <tablename>
я все еще получалERROR 1051 (42S02): Unknown table '...'
сообщение об ошибке, но по крайней мере файл .frm к тому времени исчез.