【发布时间】: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