Таблицы Mysql отсутствуют после обновления Docker: "TableName не существует в движке"

Недавнее обновление Docker, по-видимому, привело к тому, что (только некоторые) таблицы InnoDB в MariaDB были недоступны. Я получил:

#1932 - Table 'dbname.SomeTableName' doesn't exist in engine

при попытке получить к ним доступ (они показывают в списке таблиц). Я обновил Docker (и изображение) в прошлом без проблем. Файлы БД и разрешения выглядят нормально.

Я мог бы воссоздать только "отсутствующие" таблицы (4 из ~35) из резервной копии, но когда я пытаюсь удалить их, я получаю:

#1347 - 'dbname.SomeTableName' is not VIEW

Я использую изображение Docker mariadb:10.2 (MariaDB-10.2.12+maria~jessie) с привязкой для постоянного хранения данных как части локальной среды разработки Docker-для-Mac. Файл docker-compose.yml выглядит так:

mysql: image: mariadb:10.2 volumes: - ./data/mysql:/var/lib/mysql

У меня никогда не было этой ошибки раньше, и я не могу выгрузить или экспортировать недоступные таблицы. Есть ли способ восстановить или восстановить (или удалить) их? Я бы предпочел не создавать заново всю базу данных.

1 ответ

Решение

Я смог решить эту проблему с помощью пользовательской конфигурации MySQL для моего локального и добавив:

[mysqld]
lower_case_table_names=1

Вы можете сделать это без изменения конфигурации по умолчанию, подключив файл, содержащий текст выше, в каталог mysql conf.d, например:

volumes:
  - ./mysql_local.cnf:/etc/mysql/conf.d/mysql_local.cnf:ro
Другие вопросы по тегам