Как исправить ошибку 1726 (HY000): механизм хранения "MyISAM" не поддерживает системные таблицы. в Mysql 8.0 после CREATE USER
У меня установлена Debian Stretch и новая версия Mysql 8.0 (изменений в конфигурации пока нет). Когда я пытаюсь создать нового пользователя с:
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';
Я получил следующее:
ОШИБКА 1726 (HY000): механизм хранения "MyISAM" не поддерживает системные таблицы. [Mysql.db]
Любое предложение о том, что проблема может быть?
Спасибо
5 ответов
Я восстановил резервную копию базы данных в моей новой системе разработки MySQL 8, не задумываясь, и перезаписал таблицы базы данных mysql. Это было не так сложно исправить, просто пришлось немного взломать это на некоторое время, и это то, что исправило.
alter table mysql.db ENGINE=InnoDB;
alter table mysql.columns_priv ENGINE=InnoDB;
после этого я смог без проблем создать пользователя.
Ключ был в сообщении об ошибке.
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.db]
Итак, я знал, что это mysql.db, который был MyISAM и должен быть чем-то другим, поэтому я просто изменил его на InnoDB.
Надеюсь, это кому-то поможет!
Не запускайте alter table, чтобы принудительно изменить mysql.db на innodb. В итоге вы получите другую ошибку, например «Не удается загрузить из mysql.db. Вероятно, таблица повреждена». Если вы это сделали, следующее также исправит это.
Я восстановил дамп с 5.7 на новый сервер 8.0 и тут возникла такая проблема.
Чтобы исправить это, остановите службу mysql, а затем запустите эту команду, чтобы mysql 8 обновил внутренние схемы:
mysqld --upgrade=FORCE
Вы можете просмотреть журналы, чтобы увидеть его прогресс и наличие ошибок.
Я столкнулся с той же проблемой после новой установки MySQl 8.0 с последующей перезагрузкой старого (v 5.7) файла дампа. Решение состояло в том, чтобы удалить и переустановить MySQL, и на этот раз создал новый файл дампа из MySQL 5.7, содержащий только мои собственные таблицы, за исключением системных таблиц, и импортировал их в MySQL версии 8.0. Все работает безупречно.
Возможно, вам следует подумать о том, чтобы отойти от MyISAM. InnoDB является движком по умолчанию в MySQL, начиная с 5.6, MySQL 8.0 будет последней версией, которая имеет ограниченную поддержку для него.
Вы можете прочитать подробности в этом сообщении в блоге Percona
Другое решение: у меня был дамп MySQL всех моих баз данных из MySQL 5.7, включая таблицу mysql. После импорта всей папки дампа (включая эту таблицу mysql) я получил эту ошибку. После полной переустановки MySQL 8.0.21 и удаления таблицы mysql из папки дампа все заработало, как ожидалось.