Issues with setting a global setting in PostgreSQL 9.5/PostGIS2.2
-
01-10-2020 - |
Question
I am trying to set a global setting/GUC variable postgis.gdal_enabled_drivers
from the PostGIS
extension for a while. I am a non-admin user but can ask admin to change settings if needed. But I tried several different methods following the instructions but none worked.
I tried the old fashion way to change environmental variables. I had the following added to
/etc/environment
:POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
so that echo $POSTGIS_GDAL_ENABLED_DRIVERS
returns ENABLE_ALL
Now, in my non-admin PostreSQL account,
SELECT short_name, long_name FROM ST_GdalDrivers();
returns 0 rows
, meaning no GDAL drivers are enabled.
I also tried to have postgres to:
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
but I got an error:
ERROR: unrecognized configuration parameter "postgis.gdal_enabled_drivers"
I tried to:
ALTER DATABASE my_db SET postgis.gdal_enabled_drivers TO 'ENABLE_ALL';
but I got:
ERROR: permission denied to set parameter "postgis.gdal_enabled_drivers"
In sum, I can ask admin to change some settings once as in methods 1 and 2, but not every time e.g. when I do a full database restore (method 3).
My question is:
How can I make the above methods work?
FYI, my PostgreSQL version is 9.5.1, OS is Lubuntu 16.04 beta
postgis_version
---------------------------------------
2.2 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
In method 3, I can use postgres
to ALTER DATABASE
but I can't ask amin to do that every time I restore db, where I do something like:
dropdb my_db && createdb -T template my_db $$ psql < my_pg_dump_file
Solution
Edit the /etc/postgresql/9.x/main/environment
file and set following environment variables POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL
POSTGIS_ENABLE_OUTDB_RASTERS=1
. Restart then the server.
OTHER TIPS
Debugging first, do this.
SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';
SELECT * FROM ST_GdalDrivers();
If this returns nothing, you've got larger issues. Did you install from the Ubuntu/LUbuntu repos? Or, did you build yourself?
ALTER SYSTEM
is the new method to alter the configuration file with a pseudo-sql command. If you're seeing this
ERROR: unrecognized configuration parameter "postgis.gdal_enabled_drivers"
That means that you do not have that option in your postgresql.conf
. (perhaps it's commented out.) That however you can still add it the conf file manually.
A configuration option to set the enabled GDAL drivers in the PostGIS environment. Affects the GDAL configuration variable GDAL_SKIP. This option can be set in PostgreSQL's configuration file: postgresql.conf. It can also be set by connection or transaction.
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'GTiff PNG JPEG';
or to whatever you want. I would not set the environment. Instead, just put this in your /etc/postgresql/9.5/main/postgresql.conf
postgis.gdal_enabled_drivers = 'ENABLE_ALL';
Which is essentially the same as what the docs say,
SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';