我有 database1,其中 postgis 安装在公共模式中。而 postgis 所在的 database2 位于一个名为 postgis 的模式中。
当我转储 database1.schema1 时,schema1.table1 将其 geom 列引用为 public.geometry。
因此 pg_restore 抛出“schema public 不存在”错误,因为 schema1.table1 具有 public.geometry 列,并且该模式不存在,也没有在该模式中安装 postgis。
如何在没有模式限定几何列的情况下制作干净的 pg_dump?
database2 search_path 指向模式 postgis。我正在使用 PostgresSQL 10。
你不能这样做。在两个数据库中以相同的模式安装 PostGIS。这在新数据库中应该不是问题。
另一种方法是手动编辑转储文件,这既繁琐又容易出错。
正如 Laurenz 所说,您必须将 PostGIS 安装在两个数据库中的相同模式中。
之后,可以通过以下方式迁移 postgis 扩展:https ://www.postgis.net/2017/11/07/tip-move-postgis-schema/
如果需要,可以在中间数据库中完成迁移。