Postgres 教程: pg_restore: [存档器] 输入文件似乎不是有效的存档



我正在学习Postgres DVD教程,但在导入他们的示例数据库时遇到了问题。

跑步pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar.gz给了我pg_restore: [archiver] input file does not appear to be a valid archive.

到目前为止,我的过程如下:

  1. 下载 dvdrental.zip 文件
  2. 使用 tar czf dvd-database.tar.gz dvdrental.zip 将其解压缩到.tar(我也尝试先将 zip 解压缩到具有相同结果的文件夹中,并删除.gz)
  3. 如上所述运行pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar

我目前正在使用 Postgres 9.5,这可能会导致问题。寻找一个答案,指出我在这个过程中出错的地方,或者如何将Postgres数据库的存档更新到9.5。

根据上面的评论,解决方案很简单。

不需要按照教程说明中的建议将 dvdrental.zip 文件解压缩到未压缩的.tar。 如果指向提取数据库转储的目录pg_restore将起作用:

pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental

我的问题是在安装 postgresql 时,我为超级用户选择了不同的名称(例如,root,而不是 postgres )。dvdrental/restore.sql文件使用 postgres 角色。因此,要解决此问题,您需要创建另一个名为 postgres 的超级用户。

createuser --superuser postgres

然后创建具有角色postgres的服务器(PosgreSQL)和具有角色postgres的数据库dvdrental。在您可以从提取的文件夹中成功恢复数据库后

在尝试了几个小时后,对我有用,这是以下命令。自 PgAdmin 4 以来,它很难使用。

/Library/PostgreSQL/10/bin/pg_restore -U postgres -p 5433  -d dvdrental /pg-db/dvdrental/

只需将 zip 解压缩到一个文件夹中,然后在我的情况下使用这些选项执行 pg_restore 命令 Mac os,其中/pg-db/dvdrental/是 zip 提取的目录。

如果你在Docker上运行你的 postgres,那么请确保传递主机名和端口,

pg_restore -U postgres -h localhost -p 5432 -d dvdrental ./Downloads/dvdrental

在这里,./Downloads/dvdrental是从dvdrental中提取文件夹的.zip

不知道原因,但这就是它对我的工作方式。

我使用的是 ubuntu 20.04、pgadmin4 版本 5.7、postgres 版本 12.8。

在"恢复"对话框中,"自定义和焦油","..."中,单击上传以上传 TAR 文件,选择上传的文件,然后选择三个选项:前数据、数据和后数据。收到错误:失败,退出代码为 1。

删除数据库,再次创建数据库(具有相同的名称),执行与以前完全相同的方式。

这是第二次成功。在日志中,它执行了以下cmd:

/usr/bin/pg_restore --host "localhost" --port "5432" --username "postgres" --no-password --dbname "mydb" 
--section=pre-data --section=data --section=post-data --verbose "/var/lib/pgadmin/storage/my_email.com/restore_file.tar"

使用 pgAdmin 4 会更容易。

通过 pgAdmin 将 tar 文件还原到数据库时,您会收到此错误。我们通常会在这一点上卡住,忘记检查模式。

忽略该错误。数据已加载并还原。

相关内容

  • 没有找到相关文章

最新更新