MySql создать базу данных, используя Makefile - PullRequest
0 голосов
/ 06 мая 2018
include .env

help:
    @echo ""
    @echo "usage: make COMMAND"
    @echo ""
    @echo "Commands:"
    @echo "  mysql-create-db     Create mysql database"

mysql-create-db:
    @docker-compose exec -T mysqldb mysql -u"$(MYSQL_USER)" -p"$(MYSQL_PASSWORD)" -e \'create database abcd\'

также выдает ошибку для простого запроса «Показать базы данных».

Я не уверен, почему он не работает

1 Ответ

0 голосов
/ 06 мая 2018

Первое правило задавать вопросы по SO: всегда включает введенную вами команду и полученный вами результат, вырезанный и вставленный в ваш вопрос. Если выходные данные слишком длинные и беспорядочные, чтобы включать их, то по крайней мере всегда включайте фактическую ошибку или неправильный вывод, который вы получили, и несколько строк до и после него для контекста.

Первое правило написания make-файлов: никогда добавляйте @, пока ваш make-файл не заработает полностью. Вы стреляете себе в ногу, скрывая важные детали. В качестве альтернативы прочитайте http://make.mad -scientist.net / manage-recipe-echoing / для другого способа обработки этого.

Второе правило написания make-файлов: всегда убедитесь, что ваши команды работают, когда вы вводите в командной строке оболочки, прежде чем пытаться добавить ее в рецепт make-файла.

Я не знаю много о докере, но я подозреваю, что это проблема цитирования оболочки, а не проблема make ... Я подозреваю, что эта команда не будет работать, если вы вырезаете и вставляете в приглашение оболочки. Это потому, что я думаю, что вы цитируете неправильно.

Попробуйте вместо этого (обратите внимание на другое цитирование команды mysql):

mysql-create-db:
        @docker-compose exec -T mysqldb mysql -u"$(MYSQL_USER)" -p"$(MYSQL_PASSWORD)" -e "'create database abcd'"

Это гарантирует, что последняя команда представляет собой одно слово, которое включает кавычки.

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