pg_dump不写" CREATE EXTENSION postgis;"

时间:2017-06-08 17:35:46

标签: postgresql postgis

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

CREATE EXTENSION postgis;

postgis扩展安装在Postgres的目标实例中,但只有在手动执行转储的CREATE EXTENSION加载成功后才能安装。这似乎不是什么大问题,但问题是:是否可以强制pg_dump将所有必需的CREATE EXTENSION foo;语句写入转储中,这样我就不必这样做了手动吗?我在pg_dump在线文档中没有看到任何选项。

2 个答案:

答案 0 :(得分:3)

几种可能性:

  1. 此数据库已从旧版本升级,其中CREATE EXTENSION尚不存在。

  2. 有人错误地通过执行SQL脚本而不是运行CREATE EXTENSION来安装PostGIS。

  3. 您不会转储整个数据库,而是使用-n选项将转储限制为架构。

答案 1 :(得分:1)

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

pg_dump -U postgres -d mydb -s > dump.sql