docker-compose mysql 导入失败 - 输入设备不是 TTY

Rom*_*man 7 mysql docker docker-compose

我有任何正在运行的容器。所以我需要导入 sql 数据库并尝试

docker-compose exec MYSQL_CONTAINERNAME mysql -uroot -p --database=MY_DB < /code/export_new.sql
Run Code Online (Sandbox Code Playgroud)

但是我有消息“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.
Run Code Online (Sandbox Code Playgroud)

如何将我的“export_new.sql”导入放在容器中的mysql?

lch*_*ski 6

为我工作

docker-compose exec -T MYSQL_CONTAINERNAME mysql databasename < data.sql
Run Code Online (Sandbox Code Playgroud)


Tin*_*nki 0

好的,首先您必须连接到正在运行的 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"'
Run Code Online (Sandbox Code Playgroud)

在此命令中,将字符串更改some-mysql为实际容器的名称。变量对应于:

  • MYSQL_PORT_3306_TCP_ADDR - 主机(默认值:localhost)
  • MYSQL_PORT_3306_TCP_PORT - 端口(默认值:3306)
  • MYSQL_ENV_MYSQL_ROOT_PASSWORD - root 用户的密码

然后您将能够直接在 mysql 实例上执行命令,只需键入:

MY_DB < /code/export_new.sql
Run Code Online (Sandbox Code Playgroud)

对于任何故障排除或良好的信息来源,请在此处阅读有关 mysql docker 映像的信息:https: //hub.docker.com/_/mysql/