Как исправить ошибку 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 из папки дампа все заработало, как ожидалось.

Другие вопросы по тегам