我在Docker镜像(官方MySQL镜像)中导入.sql文件时遇到问题。我对他们两个都比较新,但这是我迄今为止所取得的成就:
当我尝试从Docker镜像中导入文件时,我使用:
'USE DATABASE test;'
然后source data.aktualnosci.sql
,但使用此路径和Docker卷文件夹的其他各种相对路径(我可以存储文件)只会产生Failed to open file
。
当我在文件所在文件夹中的图片外执行此操作时: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
。
当我创建该表时,使用第1个项目符号点中的命令不会抛出任何错误,但我收到此错误:ERROR 1136 (21S01) at line 23: Column count doesn't match value count at row 1
当我创建表格并放入内部即两个随机列时,则没有错误,但表格为空。
因此,每次我领先时都有另一个问题。我有40个表要导入 - 我确信有一种方法可以顺利完成。
答案 0 :(得分:2)
第一次启动容器时,使用新的数据库 将使用提供的名称创建和初始化指定的名称 配置变量。此外,它将执行文件 在。中找到的扩展名.sh,.sql和.sql.gz /docker-entrypoint-initdb.d
因此,如果您希望使用SQL数据初始化容器,它就像:
一样简单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
答案 1 :(得分:0)
使用Dockerfile构建docker镜像
我想你来自
https://hub.docker.com/_/mysql/
或类似
的变体https://hub.docker.com/r/mysql/mysql-server/
或
https://hub.docker.com/r/centurylink/mysql/
无论如何,你应该使用Dockerfile,例如这个
https://github.com/docker-library/mysql/blob/6c414e7f38c2079c7193beae5dc7c34ee46cd6e7/8.0/Dockerfile
并包含一些
ADD
https://docs.docker.com/engine/reference/builder/#add
或
COPY
https://docs.docker.com/engine/reference/builder/#copy
命令将.sql文件复制到正确的位置。
答案 2 :(得分:0)
我终于找到了方法:首先必须导入docker exec -i some-mariadb mysql -uroot -pmy-secret-pw test < table.aktualnosci.sql
因为它包含架构,然后在创建带有架构的表时导入data.aktualnosci.sql
。
感谢您的耐心等待。只是不知道数据是从数据中单独转储的。