在Docker镜像中导入.sql文件

问题描述 投票:0回答:3

我在Docker镜像(官方MySQL镜像)中导入.sql文件时遇到问题。我对他们两个都比较新,但这是我迄今为止所取得的成就:

  1. 当我尝试从Docker镜像中导入文件时,我使用:'USE DATABASE test;'然后source data.aktualnosci.sql,但使用此路径和其他各种相对路径到Docker卷文件夹(我可以存储文件)只会导致Failed to open file
  2. 当我在文件所在文件夹中的图像之外执行此操作时:docker exec -i some-mysql mysql -uroot -pmy-secret-pw data < data.aktualnosci.sql它会生成ERROR 1146 (42S02) at line 21: Table 'data.aktualnosci' doesn't exist
  3. 当我创建该表然后使用来自第一个项目符号点的命令不会抛出任何错误,但我得到此错误:ERROR 1136 (21S01) at line 23: Column count doesn't match value count at row 1
  4. 当我创建表并放入内部即两个随机列时,没有错误,但表是空的。

所以就像每次我领先时还有另外一个问题。我有40个表要导入 - 我确信有一种方法可以顺利完成。

mysql docker
3个回答
2
投票

根据qazxsw poi:

首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh,.sql和.sql.gz的文件,这些文件位于/docker-entrypoint-initdb.d中。

因此,如果您希望使用SQL数据初始化容器,它就像下面这样简单:

MySQL image documentation

0
投票

使用Dockerfile构建docker镜像

我想你的来自

docker run -d --name mysql57 -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_DATABASE=db_name \ -v /path/to/your/dump.sql:/docker-entrypoint-initdb.d/init.sql \ mysql:5.7

或类似的变体

https://hub.docker.com/_/mysql/

要么

https://hub.docker.com/r/mysql/mysql-server/

无论如何,你应该使用Dockerfile,例如这个

https://hub.docker.com/r/centurylink/mysql/

并包括一些

https://github.com/docker-library/mysql/blob/6c414e7f38c2079c7193beae5dc7c34ee46cd6e7/8.0/Dockerfile

要么

复制

https://docs.docker.com/engine/reference/builder/#add

命令,以便将.sql文件复制到正确的位置。


0
投票

我终于找到了方法:首先必须导入https://docs.docker.com/engine/reference/builder/#copy,因为它包含模式,之后我可以在创建带有模式的表时导入docker exec -i some-mariadb mysql -uroot -pmy-secret-pw test < table.aktualnosci.sql

谢谢你的耐心。只是不知道数据是从数据中单独转储的。

© www.soinside.com 2019 - 2024. All rights reserved.