【问题标题】:MYSQL Docker container gives "unknown database" errorMYSQL Docker 容器给出“未知数据库”错误
【发布时间】:2018-11-22 08:43:55
【问题描述】:

我正在使用带有 docker-compose 的 MySQL docker 容器,效果很好。

唯一的问题是我每天第一次运行它时收到错误unknown database "database_name"(Windows 启动后)

之后,如果我停止它并重新运行它,我不会收到任何错误,并且一切正常。

yaml 配置:

version: "2.0"
services:
  mysql:
    container_name: mysql
    restart: always
    image: mysql:5.7
    command: --max_allowed_packet=32505856
    ports:
      - "3306:3306"
    volumes:
      - 'C:\data\mysql_db:/var/lib/mysql/'
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    networks:
      - shared
networks:
  shared: 
    external:
      name: shared

编辑:这是一个启动日志的粘贴箱:https://pastebin.com/aJiKJ4aE

【问题讨论】:

  • 也许在环境中添加MYSQL_DATABASE: database_name 会有所帮助?
  • 我不这么认为,我正在使用多个数据库,但没有一个被识别
  • 您是否从启动中得到错误?不是来自连接并尝试做一些查询?
  • 是的,从启动开始(如果我因此尝试连接)
  • “docker logs mysql”中有什么内容?

标签: mysql docker docker-compose


【解决方案1】:

我相信您正在体验this problem。那里有几个可能的解决方案,但我自己没有尝试过,因为我在 Windows 上没有 Docker:

  1. Solution 1 by shayne
    从容器中删除 restart:always。而是运行此命令一次,它将创建一个容器,该容器将在挂载准备好时启动您的容器:
docker run --name holdup
    --restart always
    -v 'C:\data\mysql_db:/var/lib/mysql/'
    -v //var/run/docker.sock:/var/run/docker.sock
    shaynesweeney/holdup

然而,这会在重启时启动所有停止的容器。

  1. Solution 2 by evolart
    创建以下 Powershell 脚本(将您的位置调整到 docker-compose.yml 所在的位置):
Do {
    $dockerps = (docker ps)
    Start-Sleep -S 5
} While (! $dockerps -contains "mysql")
Set-Location D:\Docker\MySQL
docker-compose restart

然后:

使用“启动程序”操作添加任务计划程序任务以运行脚本。
程序/脚本:powershell.exe
添加参数:-windowstyle hidden -file D:\Docker\MySQL-Restart.ps1

【讨论】:

  • 我几乎每个月都会遇到一次类似的问题。我现在正在做的是从主机docker exec -i mysql_test mysql -uroot -ptest </home/some_user/db_backups/backup_2019-06-21.sql运行数据库备份脚本
【解决方案2】:

问题在于您的数据库容器实例中没有这样的架构。你可以做的是:

  • 运行应用程序
  • 打开您的 mysql 工作台并使用绑定端口连接到您的数据库容器实例(您也可以使用命令行创建架构)
  • 创建架构“database_name”
  • 创建表并插入日期(可选)
  • 终于重启了你的 docker 应用

您现在应该可以访问容器数据库了。

如果您不知道如何使用工作台连接到数据库容器,请查看此video

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2019-01-22
    • 2017-07-24
    相关资源
    最近更新 更多