Есть ли способ исправить pgpass.conf для правильной работы в Windows? - PullRequest
0 голосов
/ 08 мая 2019

Основываясь на моем предыдущем вопросе Как исправить скрипт Automated Backup для postgres [Окно]? .

Похоже, что на моем ПК возникла проблема с pgpass.conf, которая, по-видимому, не обеспечивает требуемый пароль при попытке резервного копирования базы данных с помощью pg_dump. Я обнаружил, что у меня странная ситуация. Однако я не мог понять, как решить эту проблему.

  1. На моем компьютере нет папки postgresql для хранения pgpass.conf -> Я пытаюсь установить Postgres, но похоже, что сообщение об ошибке показывает

    проблема с запуском шага после установки. Установка может не завершиться правильно. Ошибка инициализации кластера базы данных.

    Однако у меня уже есть папка pgAdmin на моем ПК.

  2. Я пытался найти pgpass.conf, используя dir /s | find /i "pgpass.conf" от root c:\.

    Результат выглядит так, как будто его даже не существует на моем ПК -> Поэтому я попытался создать новый файл для pgpass.conf внутри папки pgAdmin вместо папки postgresql.

  3. Я также попытался установить переменную окружения на основе Что мне нужно для работы pg_dumpall без пароля? . Ошибка на консоли показывает

    'PGPASSWORD' не распознается как внутренняя или внешняя команда

    Я пытался добавить / отредактировать скрипт следующим образом

@echo off    
  echo 192.168.1.161:5432:_wolfcom:postgres:1234>"%APPDATA%\pgAdmin\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  PGPASSWORD=R0m3o^%%Ech0-5910^& pg_dumpall -h 192.168.1.161 -w -U postgres _wolfcom > "D:\Backup\DatabaseBackUp\32312.sql" 
  pause

Может кто-нибудь выяснить, как позволить pgpass.conf нормально работать?

Вот текущий скрипт для пакетного файла

@echo off    
  echo 192.168.1.161:5432:_wolfcom:postgres:R0m3o^%%Ech0-5910^&>"%APPDATA%\pgAdmin\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" _wolfcom
  pause

Вот скрипт, который у меня работает

@echo off    
  echo 192.168.1.161:5432:_wolfcom:postgres:R0m3o^%%Ech0-5910^&>"%APPDATA%\postgresql\pgpass.conf"
  set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
  cd /d "%root%"
  pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" _wolfcom
  pause

1 Ответ

0 голосов
/ 08 мая 2019

Как и В документации говорится:

В Microsoft Windows файл называется %APPDATA%\postgresql\pgpass.conf (где %APPDATA% относится к подкаталогу Application Data в профиле пользователя).

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

Альтернативный (и, возможно, более простой) способ - использовать pgAdmin и установить флажок, который позволяет сохранить пароль для вас.Это автоматически создает файл паролей.

...