[英]pg_restore ignores .pgpass and PGPASSWORD environment variable
[英]Setting PGPASSWORD environment variable for Postgres (psql) process executed by Inno Setup
我需要使用 Inno Setup 在 Postgres 中創建一個表空間。
我在命令行上運行過這個:
SET PGPASSWORD=P0stgres
"C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h localhost -p 5432 -U postgres -d postgres -c "CREATE TABLESPACE TABLETEST OWNER postgres LOCATION E'{app}\\PATHTEST\\Db'"
我在 Inno Setup 中嘗試過這個,但沒有用:
[Run]
Filename: {sys}\cmd.exe; Parameters: "SET PGPASSWORD=P0stgres"
Filename: {sys}\cmd.exe; Parameters: ""C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h localhost -p 5432 -U postgres -d postgres -c "CREATE TABLESPACE TABLETEST OWNER postgres LOCATION E'{app}\\PATHTEST\\Db'""
問候
我能夠做到這一點。 是一個小錯誤。 正確的是:
[Run]
Filename: {cmd}; Parameters: "/K SET PGPASSWORD=P0stgres&""C:\Program Files\PostgreSQL\9.4\bin\psql.exe"" -h localhost -p 5432 -U postgres -d postgres -c ""CREATE TABLESPACE TABLETEST OWNER postgres LOCATION '{app}\PATHTEST\Db'""
我有能力做到。 密碼和&之間不應有空格。 PGPASSWORD=密碼&
文件名:“cmd.exe”; 參數:"/c set PGPASSWORD=my_db_user&""psql"" -U my_db_user -d myappdb -a -q -f C:\\my\\Manager\\SQL\\Sequences.sql & pause"; 標志:runascurrentuser;
你有三個問題:
cmd.exe
在命令之前需要/C
開關。psql.exe
的第二個cmd.exe
實例。 您必須在同一個cmd.exe
實例中執行這兩個命令。 一種方法是使用&
“operator”(另一種方法是使用包裝批處理文件來執行這兩個命令)。C:\\...\\psql.exe
和CREATE TABLESPACE ...
周圍的那些)必須加倍。{cmd}
常量而不是{sys}\\cmd.exe
。[Run]
Filename: "{cmd}"; Parameters: "/C SET PGPASSWORD=P0stgres& ""C:\Program Files\PostgreSQL\9.4\bin\psql.exe"" -h localhost -p 5432 -U postgres -d postgres -c ""CREATE TABLESPACE TABLETEST OWNER postgres LOCATION E'{app}\\PATHTEST\\Db'"""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.