我正在尝试postgis.gdal_enabled_drivers
从PostGIS
扩展中设置一个全局设置/GUC 变量一段时间。我是非管理员用户,但可以要求管理员根据需要更改设置。但是我按照说明尝试了几种不同的方法,但都没有用。
我尝试了改变环境变量的老办法。我将以下内容添加到
/etc/environment
:POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
这样echo $POSTGIS_GDAL_ENABLED_DRIVERS
返回ENABLE_ALL
现在,在我的非管理员 PostreSQL 帐户中,
SELECT short_name, long_name FROM ST_GdalDrivers();
返回0 rows
,意味着没有启用 GDAL 驱动程序。
我还尝试让 postgres 执行以下操作:
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
但我得到一个错误:
ERROR: unrecognized configuration parameter "postgis.gdal_enabled_drivers"
我尝试过了:
ALTER DATABASE my_db SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
但我得到了:
ERROR: permission denied to set parameter "postgis.gdal_enabled_drivers"
总之,我可以像方法 1 和方法 2 那样要求管理员更改一些设置,但不是每次都更改,例如当我执行完整的数据库还原时(方法 3)。
我的问题是:
我怎样才能使上述方法起作用?
仅供参考,我的 PostgreSQL 版本是 9.5.1,操作系统是 Lubuntu 16.04 beta
postgis_version
---------------------------------------
2.2 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
在方法 3 中,我可以使用postgres
toALTER DATABASE
但我不能在每次恢复 db 时都要求 amin 这样做,我在这里做类似的事情:
dropdb my_db && createdb -T template my_db $$ psql < my_pg_dump_file
编辑
/etc/postgresql/9.x/main/environment
文件并设置以下环境变量POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
POSTGIS_ENABLE_OUTDB_RASTERS=1
。然后重启服务器。先调试,再做这个。
SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';
SELECT * FROM ST_GdalDrivers();
如果这没有返回任何内容,那么您遇到了更大的问题。您是从 Ubuntu/LUbuntu 存储库安装的吗?或者,你自己建的吗?
ALTER SYSTEM
是用伪sql命令修改配置文件的新方法。如果你看到这个这意味着您的
postgresql.conf
. (也许它被注释掉了。)但是你仍然可以手动将它添加到 conf 文件中。或任何你想要的。我不会设置环境。相反,只要把这个放在你的
/etc/postgresql/9.5/main/postgresql.conf
这与文档所说的基本相同,