Cul*_*lly 61 mysql macos docker docker-compose
我刚刚在 MacOS 上从 2.3 版升级到 Docker Desktop 2.4。突然间,我的 mysql 容器都不会启动。日志显示这是原因:
Different lower_case_table_names settings for server ('2') and data dictionary ('0').
Data Dictionary initialization failed.
Aborting
Run Code Online (Sandbox Code Playgroud)
数据库文件安装在我主机上的一个卷中,以便它们在重新启动之间保持不变。
我终于知道为什么了。发帖是为了回答。
gam*_*ure 113
使用最新的 docker,您可以禁用 gRPC Fuse 以进行文件共享。(gRPC Fuse 设置导致此问题,它与 0 的数据字典不兼容)
这解决了问题......如果你高兴,你可以在这里停下来,但要使用新的文件系统,你可以:
更新
从 2.5 版开始,该设置已移至“实验功能”页面:
Cul*_*lly 19
该lower_case_table_names设置告诉 mysql 如何存储和比较表名。如果存储数据库的文件系统本身不区分大小写,它将强制您使用lower_case_table_names=2.
MacOS 文件系统不区分大小写。直到 Docker Desktop 2.4,mysql 容器显然不知道底层文件系统不区分大小写和 set lower_case_table_names=0。然而,自从升级到 Docker 2.4 后,Docker 在安装卷方面显然更加智能。因此容器实现了在不区分大小写的文件系统上运行并强制lower_case_table_names=2. 问题是你不能lower_case_table_names在初始化数据库后更改的值。并且由于数据字典是用 初始化的lower_case_table_names=0,所以当服务器设置为 时,它将无法初始化lower_case_table_names=2。
我发现的唯一解决方案是:
更新:请参阅下面的答案以获得更好的解决方案。显然没有必要降级。您可以改为禁用“用于文件共享的 gRPC Fuse”,备份数据库,重新启用 gRPC 保险丝,删除您的数据库数据文件夹,并从备份中恢复数据库。
| 归档时间: |
|
| 查看次数: |
8971 次 |
| 最近记录: |