【发布时间】:2013-09-10 10:12:37
【问题描述】:
我在恢复使用以下命令提前备份的 PostgreSQL 数据库时遇到问题:
pg_dump -i -h localhost -p 5432 -U Mark -F c -b -v -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup" mydb
现在,当我尝试在(另一台机器)上恢复此数据库备份时,出现以下错误:
pg_restore: [archiver] directory "C:\Users\mark\Desktop\MCHANBackups\DBBackup.backup" does not appear to be a valid archive ("toc.dat" does not exist)
下面是我用来恢复备份的命令:
pg_restore -i -h localhost -p 5432 -U Mark -d mydb -v "C:\Users\mark\Desktop\MCHANBackups\DBBackup.backup"
有人可以帮助我并告诉我我在这里做错了什么吗?
【问题讨论】:
-
通过命令或pgadmin手动执行?
-
我认为您使用了自定义格式,并将备份发送到普通文本文件。要从文本文件恢复,请使用 psql 命令: psql -e -d template1 -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup" 参考:postgresql.org/message-id/…
-
@r3ap3r 我尝试了 psql 命令,但它一直询问我 Windows 用户 (mchan) 密码,当我输入密码时它给了我错误 (psql: FATAL: password authentication failed for user "mchan ")...知道为什么要检查 Windows 密码吗?
-
@MChan 不确定为什么 psql 要求输入 Windows 用户密码。您可以通过在 "/data" 文件夹下的 pg_hba.conf 文件中将 "md5" 替换为 "trust" 来禁用此身份验证。要使此修改生效,您必须重新启动“postgres 服务”。完成后,您可以重试“psql”命令。它不应该要求任何密码。
-
@MChan 使用 psql -U username -d databaseName 。有关 "psql" 命令的更多文档,请参阅此链接:postgresql.org/docs/9.2/static/app-psql.html。您必须使用在数据库中定义的角色,例如 postgres 或您可能创建的任何其他角色。
标签: database postgresql database-restore