如何通过docker exec强制转储导入?

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

我正在尝试将数据库导入Docker中的mysql容器,但是sql文件出现一些错误。

我使用此代码导入数据:

docker exec -i MYCONTAINER mysql -uMYUSER -pMYPASS@ -f -D MYDATABASE < MYFILE.sql

但是仍然从文件返回有关语法的错误,我无法打开此文件,因为太大了,唯一的方法是使用mysqldump。还有其他人可以导入此文件的方法吗?

提前感谢!

mysql docker containers
1个回答
1
投票

当您运行命令docker exec <container_name> <command>时,command将在容器内执行,并且由于MYFILE.sql在该容器内不存在,因此肯定会引发错误。

另一个问题是容器已经创建,除非您要重新创建容器,否则无法将文件挂载到其中。

这里是解决此问题的方法:

  1. sql文件复制到容器中
docker cp ./MYFILE.sql MYCONTAINER:/tmp/MYFILE.sql
  1. 现在文件已经在路径/tmp/MYFILE.sql的容器中,您可以像执行命令一样>]
  2. docker exec -i MYCONTAINER mysql -uMYUSER -pMYPASS@ -f -D MYDATABASE < /tmp/MYFILE.sql
    
© www.soinside.com 2019 - 2024. All rights reserved.