pg_dump不写"CREATE EXTENSION postgis;"

pg_dump does not write "CREATE EXTENSION postgis;"

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

CREATE EXTENSION postgis;

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

几种可能性:

  1. 此数据库已从 CREATE EXTENSION 尚不存在的旧版本升级而来。

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

  3. 错误地安装了 PostGIS
  4. 您不会转储整个数据库,而是使用 -n 选项将转储限制为一个模式。

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

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