【发布时间】:2019-09-25 19:27:24
【问题描述】:
基于我之前的问题How to fix Automated Backup script for postgres [Window]?。
我的 PC 上的 pgpass.conf 似乎存在一些问题,当尝试使用 pg_dump 备份数据库时,它似乎没有提供所需的密码。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。
-
在我的 PC 上,没有
postgresql文件夹来保存pgpass.conf-> 我尝试安装 Postgres,但似乎显示错误消息运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败。
但是,我的 PC 上已经有一个
pgAdmin文件夹。 -
我已尝试使用来自根
c:\的dir /s | find /i "pgpass.conf"来查找pgpass.conf。结果看起来在我的 PC 上什至不存在 -> 这就是为什么我尝试在文件夹
pgAdmin而不是postgresql文件夹中为pgpass.conf创建一个新文件。 -
我也尝试根据What do I need for pg_dumpall to work without a password? 设置环境变量。控制台显示错误
'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
【问题讨论】:
-
正如我在其他答案的评论中提到的,它期望文件在 postgresql 中,而不是 pgAdmin。所以创建目录,重定向到那个文件夹。
-
PGPASSWORD=R0m3o^%%Ech0-5910^是环境变量的 unixstyle“内联”定义。这在 Windows 中不起作用。你需要在调用pg_dump之前运行SET "PGPASSWORD=..." -
终于可以备份数据库了!!! .非常感谢你们俩。我所做的只是创建 postgresql(只是新文件夹和新 pgpass.conf )而不安装 postgres。
-
我将在问题中添加我的新脚本,这对我有用,希望对其他人有用
标签: windows postgresql batch-file pgadmin