【问题标题】:How to restore a backupin in a different schema pgAdmin如何在不同的模式 pgAdmin 中恢复备份
【发布时间】:2020-07-16 12:02:35
【问题描述】:

我正在为 postgis 数据库苦苦挣扎。

我有来自公共架构的备份。我用 postgis 扩展创建了一个新数据库。我现在可以将数据恢复到我的 postgis 数据库中,并且工作正常。我可以将该公共架构重命名为新架构。这也适用于:

ALTER SCHEMA public RENAME TO new_schema

但现在我需要在现有数据库中执行此操作。因此,我的公共架构中包含数据,并且可能不会受到损害。我尝试了一个新的数据库来使用 ALTER SCHEMA 来解决问题。因此,我将它导入到一个空的公共架构中,并对其进行了更改,然后导出了 new_schema。这似乎可行,但是几何给我一个错误并且没有数据被恢复。

几何原为:geom public.geomtery 通过更改架构,将其更改为:geom new_schema.geomtery

在导入时我收到此错误消息:

pg_restore: error: could not execute query: ERROR:  type "new_schema.geometry" does not exist

我是 postgis 和 pgAdmin 的新手。我可以手动将其更改回geom public.geometry。但这感觉很奇怪,我认为像这样混合一个模式和另一个模式很奇怪?

我确实找到了这些信息 (Postgis installation: type "geometry" does not exist):

CREATE SCHEMA IF NOT EXISTS new_schema;

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA new_schema;

SET search_path TO new_schema;

这也可以在 pgAdmin 中完成:在 Extensions() 上的 RightMouse,选择定义并更改架构。但是postgis数据只针对new_schema?

希望有人能帮帮我;我想我遗漏了一些重要的东西,不想搞砸实时数据库。

注意安全,提前致谢。

【问题讨论】:

    标签: postgis database-schema restore pgadmin-4


    【解决方案1】:

    好的。我现在知道不要在公共模式中工作,而是为每个项目创建一个模式。因此,数据首先不应该在公共模式中。几何图形保留在公共模式中,并且可以通过这种方式对每个模式进行访问。我确实为 new_schema 重写了备份 sql,并将几何保留为 geom public.geomtery。我丢失了一些主键,但确实重写了它们(它只是一个简单的计数器)。

    所以我又学到了一点。

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2015-01-26
      • 2021-11-11
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多