【问题标题】:Error restoring Postgresql db恢复 Postgresql 数据库时出错
【发布时间】: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


【解决方案1】:

我认为您使用了自定义格式,并且将备份发送到普通文本文件。要从文本文件中恢复,请使用 psql 命令: psql -e -d template1 -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup" 请参阅 Postgresql 社区页面上的 post。

使用 psql 命令如下:

psql -e -U username -d databaseName -f "C:\Users\mchan\Desktop\MyDB\DBBackup.backup"

用户名应该是在数据库中定义的角色。例如:postgres

如果 psql 命令提示输入密码并且您不知道用户的密码,请将 pg_hba 中的“md5”替换为 “trust” “/data”文件夹下的 .conf 文件并重新启动“postgres 服务”以使此更改生效。

完成此更改后,psql 将不会提示输入密码。

有关 psql 和其他选项的更多文档,请参阅psql-doc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2011-04-28
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多