[英]docker-compose mysql import failed - the input device is not a TTY
我有任何正在运行的容器。 所以我需要导入 sql 数据库并尝试
docker-compose exec MYSQL_CONTAINERNAME mysql -uroot -p --database=MY_DB < /code/export_new.sql
但是我有消息“docker-compose exec -i MYSQL_CONTAINER NAME mysql -uroot -p --database=MY_DB < /code/export_new.sql” 如果我在之后使用“-i”或“-T”或“-it”参数命令“... exec”我有消息:
Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
Options:
-d, --detach Detached mode: Run command in the background.
--privileged Give extended privileges to the process.
-u, --user USER Run the command as this user.
-T Disable pseudo-tty allocation. By default `docker-compose exec`
allocates a TTY.
--index=index index of the container if there are multiple
instances of a service [default: 1]
-e, --env KEY=VAL Set environment variables (can be used multiple times,
not supported in API < 1.25)
-w, --workdir DIR Path to workdir directory for this command.
如何将我的“export_new.sql”导入放在容器中的mysql?
为我工作
docker-compose exec -T MYSQL_CONTAINERNAME mysql databasename < data.sql
像这样使用docker-compose exec
不起作用(不知道为什么),但是您可以使用docker exec
。 您只需要知道容器名称或 ID。 名称在docker-compose up
期间列出docker-compose up
或者您可以使用docker-compose ps
。
这是一个示例命令:
docker exec -i MYSQL_CONTAINERNAME mysql databasename < data.sql
或者您可以将docker-compose ps
到其中,以便您只需要知道短名称(在 docker-compose.yml 中定义):
docker exec -i $(docker-compose ps -q MYSQL) mysql databasename < data.sql
另外,请注意,我在使用带有 -p 标志的上述命令时遇到了麻烦,因此它会以交互方式要求输入密码,但是当我在初始命令(例如mysql -uroot -pmypwd
)中传递密码时它起作用了。
好的,首先您必须连接到正在运行的 mysql 实例。 您可以使用以下命令执行此操作:
docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
在此命令中,使用实际容器的名称更改字符串some-mysql
。 变量对应于:
然后你就可以直接在你的 mysql 实例上执行命令,输入:
MY_DB < /code/export_new.sql
有关任何故障排除或良好的信息来源,请在此处阅读有关 mysql docker 映像的信息: https : //hub.docker.com/_/mysql/
如果您的 docker DBMS 有密码,您应该使用:
docker exec -i MYSQL_CONTAINERNAME mysql databasename_optional -ppassword < data.sql
databasename_optional
是可选的,因为某些 DB Dumps 将 DB 名称设置在它之上,例如:
CREATE DATABASE IF NOT EXISTS `databasename` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `databasename`;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.