pg_dump 不写“CREATE EXTENSION postgis;”

问题描述 投票:0回答:2

我们已经使用 pg_dump 转储了使用 postgis 扩展的数据库。在另一台计算机上手动创建数据库后,尝试使用 psql 将转储加载到其中失败。结果转储中没有包含必要的语句

CREATE EXTENSION postgis;

postgis 扩展已安装在 Postgres 的目标实例中,但仅在手动执行

CREATE EXTENSION
转储加载成功后才安装。这看起来没什么大不了的,但问题是:是否可以强制
pg_dump
将所有必需的
CREATE EXTENSION foo;
语句写入转储,这样我就不必手动执行此操作?我在
pg_dump
在线文档中没有看到任何选项。

postgresql postgis
2个回答
20
投票

几种可能性:

  1. 此数据库已从旧版本升级,其中

    CREATE EXTENSION
    尚不存在。

  2. 有人通过执行 SQL 脚本而不是运行

    CREATE EXTENSION
    错误地安装了 PostGIS。

  3. 您不会转储整个数据库,而是使用

    -n
    选项将转储限制为某个架构(如果将转储限制为某个架构,则即使扩展架构位于转储的架构中,它也不会转储扩展) .


3
投票

您可以使用它来转储架构和扩展(在 11.2 上测试):

pg_dump -U postgres -d mydb -s > dump.sql
© www.soinside.com 2019 - 2024. All rights reserved.