MYSQL Docker容器给出“未知数据库”错误

时间:2018-11-22 08:43:55

标签: mysql docker docker-compose

我将MySQL的docker容器与docker-compose配合使用,效果很好。

唯一的问题是每天(在Windows启动后)第一次运行该错误unknown database "database_name"

在那之后,如果我停止它并重新运行它,我没有任何错误,并且一切正常。

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

2 个答案:

答案 0 :(得分: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

但是,这将在重启后启动 all 个已停止的容器。

  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隐藏-文件​​D:\ Docker \ MySQL-Restart.ps1

答案 1 :(得分:0)

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

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

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

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