Таблицы 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