Не удалось импортировать docker-compose mysql - устройство ввода не является TTY - PullRequest
0 голосов
/ 25 мая 2018

У меня есть любые работающие контейнеры.Поэтому мне нужно импортировать базы данных 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

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, который помещен в контейнер?

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Использование 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 голосов
/ 18 мая 2019

работал у меня с

docker-compose exec -T MYSQL_CONTAINERNAME mysql databasename < data.sql
0 голосов
/ 25 мая 2018

Хорошо, сначала вы должны подключиться к запущенному экземпляру 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_MYSASS_ROOT - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 101_ пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 - пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 * пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012 - пароль пользователя - 1012)*

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

MY_DB < /code/export_new.sql

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...