我在Docker镜像(官方MySQL镜像)中导入.sql文件时遇到问题。我对他们两个都比较新,但这是我迄今为止所取得的成就:
'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
。ERROR 1136 (21S01) at line 23: Column count doesn't match value count at row 1
所以就像每次我领先时还有另外一个问题。我有40个表要导入 - 我确信有一种方法可以顺利完成。
根据qazxsw poi:
首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh,.sql和.sql.gz的文件,这些文件位于/docker-entrypoint-initdb.d中。
因此,如果您希望使用SQL数据初始化容器,它就像下面这样简单:
MySQL image documentation
使用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文件复制到正确的位置。
我终于找到了方法:首先必须导入https://docs.docker.com/engine/reference/builder/#copy,因为它包含模式,之后我可以在创建带有模式的表时导入docker exec -i some-mariadb mysql -uroot -pmy-secret-pw test < table.aktualnosci.sql
。
谢谢你的耐心。只是不知道数据是从数据中单独转储的。