3

Ich konnte keine Sicherung durchführen, weil pg_dump den folgenden Fehler zeigt.pg_dump Passwort Authentifizierung fehlgeschlagen Fehler mit pgpass.conf-Datei in Windows

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" 

So sieht meine pgpass-Datei aus.

localhost:5432:mydb:postgres:mypassword 

Wenn ich pgpass.conf Datei und starten Sie die pg_dump-Datei entfernen, fordert es für Passwort und die Sicherung ordnungsgemäß ausgeführt.

So sieht das Script pg_dump aus.

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% 

Dies ist eine geplante Aufgabe von Windows, also möchte ich nicht, dass der Benutzer das Kennwort eingibt.

+0

Welche Werte enthalten die Variablen% PG_PORT%,% PG_USER%% PG_HOST% und% DB%? –

+0

Der Port stammt aus einer Registrierungsdatei. user - postgres, host - localhost, db - mydb – wondie

+0

"* Dies ist ein geplanter Windows-Task *" - unter welchem ​​Windows-Benutzer wird diese Task ausgeführt? Ist das "MeinName"? –

Antwort

1

Ich habe das Problem gefunden. Das Skript, das die Datei "pgpass.conf" erstellt, hat nach dem Kennwort ein Leerzeichen erstellt, und dieses Feld hat das Kennwort "mypassword" falsch gesetzt. Also, wenn ich den Raum entfernt habe, funktioniert es richtig!

Das Skript, das die pgpass Datei erstellt wurde:

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

ich es in die folgenden geändert. Siehe das Leerzeichen zwischen PG_PASSWORD% und> wird entfernt.

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

Sie müssen die Datei nicht wirklich erstellen, wenn Sie alle diese Werte in Umgebungsvariablen haben. –

+0

Das Problem besteht darin, dass in der Datei "pgpass.conf" in Windows Server 2012 R2 kein Kennwort festgelegt ist. Die Datei ist da, aber sie ist leer. – wondie