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
在线文档中没有看到任何选项。
几种可能性:
此数据库已从 CREATE EXTENSION
尚不存在的旧版本升级而来。
有人通过执行 SQL 脚本而不是 运行 CREATE EXTENSION
.
错误地安装了 PostGIS
您不会转储整个数据库,而是使用 -n
选项将转储限制为一个模式。
您可以使用它来转储架构和扩展(在 11.2 上测试):
pg_dump -U postgres -d mydb -s > dump.sql
我们使用 pg_dump 转储了一个使用 postgis 扩展的数据库。在另一台机器上手动创建数据库后,尝试使用 psql 将转储加载到其中失败。结果转储不包含必要的语句
CREATE EXTENSION postgis;
postgis 扩展已安装在 Postgres 的目标实例中,但仅在手动执行 CREATE EXTENSION
转储加载成功后。这似乎没什么大不了的,但问题是:是否可以强制 pg_dump
将所有必需的 CREATE EXTENSION foo;
语句写入转储,这样我就不必手动执行了?我在 pg_dump
在线文档中没有看到任何选项。
几种可能性:
此数据库已从
CREATE EXTENSION
尚不存在的旧版本升级而来。有人通过执行 SQL 脚本而不是 运行
CREATE EXTENSION
. 错误地安装了 PostGIS
您不会转储整个数据库,而是使用
-n
选项将转储限制为一个模式。
您可以使用它来转储架构和扩展(在 11.2 上测试):
pg_dump -U postgres -d mydb -s > dump.sql