mysql - MySQL Docker 容器中止 - [错误] [MY-011087]
问题描述
该容器由 Apache-PHP、MySQL、Nodejs 和 phpmyadmin DBMS 组成。在我的 docker-compose.yml 文件中,我设置了一个卷来保存 MySQL 数据库服务器的数据。如果您构建应用程序、创建数据库、添加数据等,一切正常。转动它,停止它。再次旋转,一切正常。
这是问题:
我在我的 Mac 机器上构建了一个应用程序,并附带了应用程序创建到 CRUD 的数据库/数据。我正在使用 GitHub 一个遥控器。当我在工作的(Windows)机器上拉下遥控器时,MySQL 数据库服务器无法启动。
dbServer | 2021-04-22T14:07:58.964842Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.23) starting as process 1
dbServer | 2021-04-22T14:07:58.985910Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
dbServer | 2021-04-22T14:07:59.793149Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
dbServer | 2021-04-22T14:07:59.810522Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('2').
dbServer | 2021-04-22T14:07:59.810867Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
dbServer | 2021-04-22T14:07:59.811096Z 0 [ERROR] [MY-010119] [Server] Aborting
其他 Mac 用户可以毫无问题地启动。我设法让它在 Windows 机器上工作的唯一方法是在推送时忽略数据量,但是当你拉动并启动容器时,你必须使用 SQL 脚本构建数据库结构。
这是 MySQL 容器的 docker-compose.yml 文件中的代码:
version: "3"
database:
build:
context: "./bin/${DATABASE}"
container_name: '${DATABASE_HOST_NAME}'
networks:
- backend
ports:
- "127.0.0.1:${HOST_MACHINE_MYSQL_PORT}:3306"
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
- ${MYSQL_LOG_DIR}:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
我已经尝试使服务器值lower_case_table_names = '2'
匹配在 Mac 主机上创建的数据字典,但我假设由于容器是基于 Linux 的,它只是立即将服务器设置重置为“0”并失败。
有没有一种快速简便的方法来解决此问题,而无需备份/擦除所有内容并从头开始?
任何帮助表示赞赏。
解决方案
推荐阅读
- list - 删除列表中给定元素的第一次出现
- angular - 有 IDM 时,ngx-extended-pdf-viewer 失败
- javascript - 如何使用令牌和硒(python)登录不和谐
- gradle - Gradle 允许不安全的存储库镜像
- python - 是否可以屏蔽后台任务被 asyncio.run() 取消?
- mongodb - mongodb嵌套展开并删除重复项
- c++ - 变量仅在特定的 cout 语句中打印预期的(字符串的长度)值
- material-ui - react-hook-form + materialUI + 是的:需要如何制作文件
- java - 在 AWS 中的多台机器上分配 webclient 调用
- azure-devops - 将 Nuget 包推送到 Azure Feed 失败:包无效:包版本过长。最大长度为“90”个字符