Не удалось импортировать docker-compose mysql - устройство ввода не является TTY

0

У меня есть беговые контейнеры. Поэтому мне нужно импортировать базы данных 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" или "[ CN00] t "после команды"... 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
docker-compose

3 ответа

1

Использование docker-compose exec как это не помогло (не знаю почему), но вы можете использовать docker exec. Вам просто нужно знать имя или идентификатор контейнера. Имя отображается во время 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).

0

Работал для меня с

docker-compose exec -T MYSQL_CONTAINERNAME mysql databasename < data.sql
  • 1
    Лучшее решение imo, опция -T работает как шарм.
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"'

в этой команде измените строку some-mysql с именем вашего фактического контейнера. Переменные соответствуют:

  • MYSQL_PORT_3306_TCP_ADDR - хост (по умолчанию: localhost)
  • MYSQL_PORT_3306_TCP_PORT - порт (по умолчанию: 3306)
  • MYSQL_ENV_MYSQL_ROOT_PASSWORD - пароль пользователя root

Затем вы сможете выполнять команды непосредственно на вашем экземпляре mysql, co будет достаточно ввести:

MY_DB < /code/export_new.sql

Для получения любых сведений об устранении неполадок или хорошего источника информации, пожалуйста, прочитайте здесь изображение mysql docker: https://hub.docker.com/_/mysql/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню