【问题标题】:Unable to restore complete database from pg_dump无法从 pg_dump 恢复完整的数据库
【发布时间】:2019-12-07 08:29:05
【问题描述】:

我运行了以下命令来备份我的 PostgreSQL 数据库:

pg_dump -U postgres -h localhost -W -F t crewdb > /home/chris1/Documents/crewcut/crewdb/crewdb_bak.tar

此文件后来被保存到 USB 中。

在新的 Ubuntu 18.04 系统上安装 PostgreSQL 后,我运行以下命令从 USB 恢复数据库:

psql -U postgres -d crewdb < /media/chh1/1818-305D/crewdb_bak.tar

数据库的结构已经恢复,所以表、视图等除了表中的实际数据还没有恢复。

有没有人知道为什么会这样以及如何解决这个问题。

【问题讨论】:

  • 您创建了一个tar 备份 - 您需要使用pg_restore 来恢复它,而不是psql

标签: postgresql-10 pg-dump


【解决方案1】:

我不知道你运行的恢复数据的命令是否正确;在任何情况下,尝试使用 pq_restore,就像 official documentation“从 pg_dump 创建的存档文件中恢复 PostgreSQL 数据库”中所说的那样,这是正确的方法。

在我的情况下,我使用pg_dumpall -U user &gt; backup.sql,然后使用“cat backup.sql | psql -U user database

我建议您检查一下您在 pg_dump 上使用的标志

【讨论】:

  • 谢谢 J,我试过 pg_restore -d crowddb -U username -C /media/chh1/1818-305D/crewdb_bak.tar 得到以下错误信息: pg_restore: [archiver] input file is too短(读取 0,预期 5)
猜你喜欢
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2018-07-22
  • 2012-09-01
  • 2021-12-17
相关资源
最近更新 更多