Great!  Thanks Jeff.  Turns out it was the single quotes in other parts of
the connection string...  Not sure why.  Possibly special characters in the
password or username?  After removing them, I no longer have connection
issues.  With that being solved, removing the WHERE clause at least returns
a blank image instead of an error.

I then brought back the WHERE clause, which returned an error despite
working in GDAL.
This WHERE clause returns a single raster result in GDAL with the exact
same connection string as above:
gdalinfo "PG:.. where='timestamp=\'2019-03-05 00:00:00\''"

However, no matter the combination of string literals, escape characters,
and whatnot, I could not get MapServer to handle this clause without error.

But wait!  Enter Postgres's dollar-quoted string constants:
where='timestamp=$$2019-03-05 00:00:00$$'

The DATA connection string now works.  Hope this helps anyone in the future.

Regards,
Thomas

On Tue, Mar 5, 2019 at 3:24 PM Jeff McKenna <jmcke...@gatewaygeomatics.com>
wrote:

> Hi Thomas,
>
> I would try the following:
>
> - remove all single quotes from your DATA statement (most times they are
> unnecessary for my use, and cause me problems)
> - remove the WHERE clause
> - also try to access another table from your database, but not raster,
> using that same DATA connection statement (I bet the problem has nothing
> to do with the raster table, but instead is your connection parameters)
> - verify that remote connections can access your database (check your
> file pg_hba.conf)
>
> hope that brings ideas and opens doors...
>
> -jeff
>
>
>
> --
> Jeff McKenna
> MapServer Consulting and Training Services
> https://gatewaygeomatics.com/
>
>
> On 2019-03-04 2:38 PM, Thomas Horner wrote:
> > I have a PostGIS connection string that works fine in GDAL, as I get a
> > raster response when running
> > ---
> > gdalinfo "PG:host=... port=5432 user='...' password='...'
> > dbname='weather_models' schema='rasters'
> > table='wpc_snow_50pct_1551268800' column='rast' mode=1
> > where='timestamp=\'2019-03-02 00:00:00\''"
> > ---
> >
> > On this very same server, I have cgi-mapserver running, and the output
> > from /usr/lib/cgi-bin/mapserv/ -v is
> > ---
> > MapServer version 7.2.1 OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ
> > SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=SVG_SYMBOLS
> > SUPPORTS=RSVG SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER
> > SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT
> > SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI
> > SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=PBF INPUT=JPEG INPUT=POSTGIS
> > INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
> > ---
> >
> > The problem is, when I use that same PG:... connection string as the
> > DATA for a LAYER in MapServer, I get an unhelpful error: Unable to
> > access file. Corrupt, empty or missing file '<snip of PG connection
> > string>' Couldn't establish a database connection.
> >
> > Despite turning DEBUG level to 5, and CPL_DEBUG to ON in the MAP block
> > of my mapfile, I don't get any helpful debug information whatsoever in
> > my error log -- just the connection string and "Couldn't establish a
> > database connection." I have tried a variety of where clauses and other
> > tables and get the same result. I have no idea if the actual error is
> > coming from GDAL or MapServer, despite all those strings working fine
> > when running them directly via GDAL.
> >
> > By the way, it's the same error whether I use 'timestamp'= or timestamp=.
> >
> > Here is the mapfile:
> > ---
> > MAP
> >   CONFIG "MS_ERRORFILE" "/map/error.txt"
> >   CONFIG "CPL_DEBUG" "ON"
> >   DEBUG 5
> >   PROJECTION
> >    "init=epsg:4326"
> >   END
> >   LAYER
> >    NAME wpc_snow_50pct
> >    TYPE RASTER
> >    STATUS ON
> >    VALIDATION
> >     "timestamp" ".*"
> >    END
> >    PROJECTION
> >     "init=epsg:4326"
> >    END
> >    METADATA
> >     "wms_title" "wpc_snow_50pct"
> >     "wms_srs"   "EPSG:4326"
> >     "wms_extent" "-108.5 41 -104.5 36"
> >     "wms_enable_request" "*"
> >    END
> >    DATA "PG:host=... port=5432 dbname='weather_models' user='...'
> > password='...' schema='rasters' table='wpc_snow_50pct_1551268800'
> > column='rast' mode=1 where='timestamp=\'2019-03-02 00:00:00\''"
> >    PROCESSING "BANDS=1"
> >   END
> > END
> > ---
> >
> > Any help is appreciated!
> >
> > Thanks,
> > Thomas
> >
> >
> _______________________________________________
> mapserver-users mailing list
> mapserver-users@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to