pg_ctl: слишком много аргументов командной строки [-o initdb-options] цитирование - PullRequest
0 голосов
/ 07 апреля 2020

Документация PostgreSQL о pg_ctl описывает:

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

-o initdb-options --options=initdb-options Определяет параметры, передаваемые непосредственно в команда initdb. -o может быть указан несколько раз, при этом все заданные параметры будут пропущены.

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

Но по крайней мере на Windows, который не работает, все комбинации:

pg_ctl.exe init -D "C:/Test DB" -o"--pwfile=C:/XXX YYY/pg_pw.txt"
pg_ctl.exe init -D "C:/Test DB" -o"--pwfile="C:/XXX YYY/pg_pw.txt""
pg_ctl.exe init -D "C:/Test DB" -o"--pwfile='C:/XXX YYY/pg_pw.txt'"
pg_ctl.exe init -D "C:/Test DB" -o'--pwfile="C:/XXX YYY/pg_pw.txt"'
pg_ctl.exe init -D "C:/Test DB" -o"--pwfile="C:/XXX^ YYY/pg_pw.txt""
pg_ctl.exe init -D "C:/Test DB" -o"--pwfile="C:/XXX\ YYY/pg_pw.txt""
pg_ctl.exe init -D "C:/Test DB" -o"--pwfile=^"C:/XXX YYY/pg_pw.txt^""

fail:

pg_ctl: too many command-line arguments (first is "YYY/pg_pw.txt")
Try "pg_ctl --help" for more information.

1 Ответ

0 голосов
/ 07 апреля 2020

Используйте \" для выхода из внутренних двойных кавычек:

pg_ctl.exe init -D "C:/Test DB" -o"--pwfile=\"C:/XXX YYY/pg_pw.txt\""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...