【问题标题】:Unable to restore pg_dump backup无法恢复 pg_dump 备份
【发布时间】:2013-05-08 12:08:26
【问题描述】:

我正在尝试从 Postgres 9.1.1 恢复备份,该备份由以下人员创建:

pg_dump mydb > backup.sql

在 Postgres 9.1.9 上恢复

psql -d mydb -f backup.sql

我收到此错误:

psql:datasets.sql:278537: invalid command \.
psql:datasets.sql:278544: ERROR:  syntax error at or near "1"
LINE 1: 1 4446 49 253.412262 239.618317 0 211.54303 100.482948 197.1...

\. 是COPY 命令的一部分,我猜它应该在 Postgres 9 版本之间兼容,或者不是?

COPY data_136 (id, in_1, in_2, in_3, in_4, out_1) FROM stdin;
1       5.0999999       3.5     1.39999998      0.200000003     Iris-setosa
2       4.9000001       3       1.39999998      0.200000003     Iris-setosa
--- few more line cutted
150     5.9000001       3       5.0999999       1.79999995      Iris-virginica
\.

【问题讨论】:

  • 我想你的意思是psql -d mydb -f backup.sql 或psql -d mydb < backup.sql。 -f 更可取,因为它可以让 psql 给出正确的行号。
  • 是的,当然。缺少-f。
  • 您可能需要显示带有COPY 的行(来自转储)、错误行之后的几行和错误行周围的几行。
  • 发布的 COPY 数据看起来不错。可能有什么东西破坏了转储,比如将制表符转换为空格?
  • 可能是行尾弄乱了?你有没有用 FTP 把它复制到某个地方,它是 ASCII 模式(为什么现代的 FTP 客户端甚至实现了这个功能,更不用说默认启用它了,让我不知道......)?

标签: postgresql postgresql-9.1 psql pg-dump


【解决方案1】:

问题是由之前的错误引起的:

ERROR:  permission denied for schema pg_catalog

我正在导入拥有数据库所有权限的用户,无论如何在postgres用户下运行导入解决了这个问题。

【讨论】:

【解决方案2】:

这个错误发生在我身上的原因相同:我以权限不足的用户身份登录。

为了完整起见,我将提到如何在指定执行操作的用户的同时进行恢复:

psql -U postgres -d mydb -f backup.sql

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多