Postgresql pg_转储密码身份验证失败Windows中的pgpass.conf文件出错

Postgresql pg_转储密码身份验证失败Windows中的pgpass.conf文件出错,postgresql,batch-file,scheduled-tasks,postgresql-9.4,pg-dump,Postgresql,Batch File,Scheduled Tasks,Postgresql 9.4,Pg Dump,我无法进行备份,因为pg_dump显示以下错误 pg_dump: [archiver (db)] connection to database "mydb" failed: FATAL: password authentication failed for user "postgres" password retrieved from file "C:\Users\MyName\AppData\Roaming\postgresql\pgpass.conf" 这就是我的pgpass文件

我无法进行备份,因为pg_dump显示以下错误

pg_dump: [archiver (db)] connection to database "mydb" failed: 
FATAL:  password   authentication failed for user "postgres"
password retrieved from file 
"C:\Users\MyName\AppData\Roaming\postgresql\pgpass.conf"
这就是我的pgpass文件的样子

localhost:5432:mydb:postgres:mypassword
当我删除pgpass.conf文件并运行pg_转储文件时,它会提示输入密码,备份会正常运行

这就是pg_dump脚本的样子

set PGPASSFILE=%APPDATA%\postgresql\pgpass.conf
%PG_BIN%pg_dump -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -F c -b -v -f %BACKUP_FILE% %DB%

这是Windows计划的任务,因此我不希望用户输入密码

我发现了问题。创建pgpass.conf文件的脚本在密码后创建了一个空格,该空格导致password-mypassword错误。因此,当我删除空间,它正常工作

创建pgpass文件的脚本是:

echo %PG_HOST%:%PG_PORT%:*:%PG_USER%:%PG_PASSWORD% > %PGPASS_FILE%
我把它改成了下面的。请参阅PG_PASSWORD%和>之间的空格已删除

echo %PG_HOST%:%PG_PORT%:*:%PG_USER%:%PG_PASSWORD%> %PGPASS_FILE%

变量
%PG\u PORT%
%PG\u USER%
%PG\u HOST%
%DB%
包含哪些值?端口来自注册表文件。user-postgres,host-localhost,db-mydb“这是一个Windows计划任务”-该任务在哪个Windows用户下运行?那是我的名字吗?是的。MyName是当前登录并运行计划任务的Windows用户。如果环境变量中包含所有这些值,则实际上不需要创建该文件。问题是,在Windows Server 2012 R2中,pgpass.conf文件未设置密码。文件在那里,但它是空的。