【发布时间】:2018-08-09 01:10:27
【问题描述】:
最近的 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
我以前从未遇到过此错误,并且无法转储或导出无法访问的表。有没有办法恢复或修复(或删除)它们?我宁愿不必重新创建整个数据库。
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
-
我认为这完全属于“直接涉及主要用于编程的工具”,这里还有很多关于 MySql 配置的其他问题。
-
其实不然。 Docker 只是另一个轻量级虚拟机,就像 Debian chroot 一样。 Docker 应该用于 API 问题,但 Stack Overflow 已成为问题的垃圾场。
-
原来这只是间接的 Docker 问题,这对你有什么改变吗? Docker 只是参与其中,因为它为更新 MariaDB 版本做出了贡献——类似于它曾经是 yum 或 apt。同样,我正在运行一个非常常见的开发设置,所以我不得不认为它可能发生在其他人身上。
标签: mysql docker docker-compose mariadb docker-for-mac