psql: FATAL: роль "-h" не существует - PullRequest
0 голосов
/ 12 июня 2018

Я искал эту проблему в Интернете, и ни один из ответов не прояснил мой вопрос.

Вот моя проблема:

Я пытаюсь запустить файлы .sql, используя один из сценариев(abc.sh) в Сентосе (SSH).Эти файлы .sql запускают команды выбора в postgreSQL и извлекают данные в файл.Однако, когда я пытаюсь запустить скрипт (abc.sh), я вижу ошибку, выданную на консоли, как показано ниже

-bash: line 2: <**environment-file-path**>: Permission denied
psql: FATAL:  role "-h" does not exist

Ошибка возникает в строке

. /<env_file_path>/yyy.env
export PGPASSWORD=$PGPASSWORD | psql -U $PGUSERNAME $PGNAME -h $PGHOST -c "SET search_path TO xxx;COPY (select....,

IЯ действительно не уверен, что является причиной проблемы здесь, поскольку я сделал все, что можно сделать с моей стороны.1. Я выполнил одни и те же сценарии в другой среде с разными учетными данными пользователя и хоста, и это сработало.2. Я изменил файл pg_hba.conf, т. Е. Сделал его похожим на среду, в которой успешно выполнялись сценарии.

ПРИМЕЧАНИЕ. У меня есть файл среды, в котором хранится вся полезная информация и параметры дляПеречисленные выше переменные (второй фрагмент) передаются из этого файла env.

Даже после выполнения этих действий я не вижу никаких изменений в проблеме.Надеемся, что это незначительная проблема, и ее можно легко исправить с помощью чьей-либо помощи.

1 Ответ

0 голосов
/ 12 июня 2018

Вам нужно сделать файл /<env_file_path>/yyy.env доступным для чтения. Похоже, в каталоге, в котором содержится этот файл, отсутствует разрешение на выполнение.Выполнение необходимо для чтения файлов в этом каталоге.

, но там есть некоторые действительно плохие сценарии оболочки ... всегда используют кавычки вокруг переменных .также не отправляйте экспорт по конвейеру.

export PGPASSWORD="$PGPASSWORD" 
psql -U "$PGUSERNAME" "$PGNAME" -h "$PGHOST" -c "SET search_path TO xxx;COPY (select....,  "

Теперь вы получите более заметное сообщение об ошибке, если забудете установить $PGNAME.

Всегда используйте кавычки, если вы сталкиваетесь с использованиемВ случае отсутствия кавычек, вы, вероятно, должны использовать там массив (и все еще использовать кавычки).

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