ldg*_*ldg 6 mysql mariadb docker docker-compose docker-for-mac
最近的 Docker 更新似乎导致 MariaDB 中的(仅部分)InnoDB 表无法访问。我得到:
#1932 - Table 'dbname.SomeTableName' doesn't exist in engine
尝试访问它们时(它们确实出现在表格列表中)。我过去更新了 Docker(和图像)没有问题。db 文件和权限看起来不错。
我可以从备份中重新创建“丢失”的表(约 35 个中的 4 个),但是当我尝试删除它们时,我得到:
#1347 - 'dbname.SomeTableName' is not VIEW
我正在使用 Docker 映像mariadb:10.2(MariaDB-10.2.12+maria~jessie) 作为本地 Docker-for-Mac 开发环境的一部分,用于持久数据存储的绑定安装。docker-compose.yml 文件如下所示:
mysql:
image: mariadb:10.2
volumes:
- ./data/mysql:/var/lib/mysql
我以前从未遇到过此错误,无法转储或导出无法访问的表。有没有办法恢复或修复(或删除)它们?我宁愿不必重新创建整个数据库。
我能够通过为本地使用自定义 mysql 配置并添加以下内容来解决此问题:
[mysqld]
lower_case_table_names=1
Run Code Online (Sandbox Code Playgroud)
您可以在不更改默认配置的情况下执行此操作,方法是将包含上述文本的文件挂载到 mysql conf.d 目录中,例如:
volumes:
- ./mysql_local.cnf:/etc/mysql/conf.d/mysql_local.cnf:ro
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4216 次 |
| 最近记录: |