2016-11-30 2 views
-1

Я новичок в Makefile. Мне нужно автоматизировать создание пользователя для терминала postgres.LINUX GNU Создать новый пользователь Postgres DB в Makefile

Я попробовал этот пример, и он не работает для меня:

createuser: 
    @echo "$(OK_COLOR)==> create user$(NO_COLOR)" 
    @psql mydbdevelopmentname 
    @create user myusername; 
    @/q 
    @echo "$(OK_COLOR)==> Done$(NO_COLOR)" 

Ни @create user myusername;, ни @/q работы.

Когда я побежал make createuser и выхода вручную с \ д от Postgres терминала, я получаю эту ошибку:

/bin/sh: create: command not found 
make: *** [createuser] Error 127 

ответ

1

При отладке мейкфайлов модификатор @ не бесполезен, так как он больше не показывает эти команды перед их выполнением ,

Я подозреваю, что вы на самом деле хотели передать create user myusername вашей линии psql, но вы написали ее как отдельную команду. Вы должны убедиться, что psql видит:

psql -c "create user myusername" mydbdevelopmentname 

Не забудьте объявить цель как зависимость .PHONY.

Замечу попутно, что Make, как правило, является плохим выбором для использования в качестве языка сценариев - это намного лучше для создания целей из их зависимостей, поскольку это предназначено для. Этот вид больше подходит для такого языка, как Bash или Python.

+0

Я получаю другую ошибку сейчас 'psql: FATAL: роль« создать пользователя myusername »не существует make: *** [createuser] Ошибка 2' – Skipoura

+1

Смешанная с MySQL - я имел в виду' -c', а не '-e' (поскольку страница-страница показывала бы вас, если бы вы беспокоились). –

+0

Спасибо! Это сработало! – Skipoura

Смежные вопросы