【问题标题】:Postgres 9.3 Backup and Restore ErrorPostgres 9.3 备份和恢复错误
【发布时间】:2014-04-05 12:54:36
【问题描述】:

很好,我已经使用“pg_dump”实用程序备份了我的数据库(转储文件 名称是“testbackup.sql”)。在恢复之前,我放弃了所有 我创建的表、视图、序列、函数。之后使用 “psql”命令尝试恢复转储。但它显示了重复键 违规错误。 **

错误:psql.bin:testbackup.sql:17884:错误:重复键值 违反唯一约束“pg_largeobject_metadata_oid_index”。

**我在网上搜索过 但我无法找到正确的解决方案。所以请为我们提供正确的解决方案 解决方案。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您似乎忘记放下所有大型物体。通过签入pg_largeobject 列出他们的 ID,并使用lo_unlink 删除他们。

    【讨论】:

      【解决方案2】:

      要更明确地回答这个问题 - 执行以下查询以清除大型对象 (LO):

      SELECT lo_unlink(loid) FROM pg_largeobject;
      

      在某些环境中you might not be able to do this 并获得以下信息:

      错误:表 pg_largeobject 的权限被拒绝

      上下文:SQL 语句“SELECT lo_unlink(loid) FROM pg_largeobject”

      然后一个解决方法是这样做:

      SELECT lo_unlink(oid) FROM pg_largeobject_metadata;
      

      您可能仍然会遇到这种形式的错误...

      错误:大对象 123456789 不存在

      ...这意味着您的数据库包含未引用的大对象。

      这些可以使用 PostgreSQL 的 vacuumlo 实用程序(不是 SQL 查询)清除:

      vacuumlo [DATABASE]
      

      【讨论】:

        猜你喜欢
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        • 2019-05-14
        • 2011-04-28
        • 2013-03-31
        • 2012-01-14
        • 2011-07-02
        • 2021-08-14
        相关资源
        最近更新 更多