Dear Regina and Rich,

I tried to follow your instructions by doing the following:


1.       I redid the backup of my database excluding the public schema. This 
completed with an exit code 0 so I am assuming no problems.

2.       I created the ‘new’ database on my laptop and then added the postgis 
extension. All functions were there and the extension is in the Public schema.

3.       I then ran the following script
ALTER FUNCTION _raster_constraint_pixel_types(raster)
        SET search_path=pg_catalog,public,postgis;
      ALTER FUNCTION _raster_constraint_info_regular_blocking(name,name,name)
         SET search_path=pg_catalog,public,postgis;
      ALTER FUNCTION _raster_constraint_nodata_values(raster)
         SET search_path=pg_catalog,public,postgis;
      ALTER FUNCTION _raster_constraint_out_db(raster)
         SET search_path=pg_catalog,public,postgis;

4.  I then attempted the restore and unfortunately the same thing happened 
again .i.e
pg_restore: processing data for table "dems"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3418; 0 94054 TABLE DATA dems 
postgres
pg_restore: [archiver (db)] COPY failed for table "dems": ERROR:  function 
st_bandmetadata(public.raster, integer[]) does not exist
LINE 1: ...(round(nodatavalue::numeric, 10))::numeric[] FROM st_bandmet...
                                                             ^
HINT:  No function matches the given name and argument types. You might need to 
add explicit type casts.
QUERY:   SELECT array_agg(round(nodatavalue::numeric, 10))::numeric[] FROM 
st_bandmetadata($1, ARRAY[]::int[]);
CONTEXT:  SQL function "_raster_constraint_nodata_values" during inlining
COPY dems, line 1: "1      
0100000100000000000000344000000000000034C0E0CCCCCCB1D517418066666692F80C41000000000000000000000000..."
pg_restore: executing SEQUENCE SET dems_rid_seq

Firstly, is this what you expected me to do or did I misunderstand? Secondly, 
does this mean that I have to do this for each of the _raster_constraint 
functions? (I think there are 16 of them)

Hopefully I am making progress.

Darrel




From: postgis-users [mailto:[email protected]] On Behalf Of 
Richard Greenwood
Sent: 11 November 2015 22:41
To: PostGIS Users Discussion <[email protected]>
Subject: Re: [postgis-users] restore problem

Darrel,
A couple people have already pointed out that creating the postgis extension in 
the target database before you restore is advisable. Going along with that I 
also recommend excluding postgis from your backup. Postgis is put in the 
"public" schema so I avoid putting anything else in the "public" schema and 
then exclude it from my backups. The backups are a little smaller, there are 
fewer notices when you restore, and upgrading the postgis versions is a breeze.
Best of luck,
Rich

On Wed, Nov 11, 2015 at 2:56 PM, Darrel Maddy 
<[email protected]<mailto:[email protected]>> wrote:
Dear Regina,

Many thanks for this. A least now it looks like this is nothing I have done (my 
first assumption with all problems is that I did something wrong – this 
assumption is usually correct).

I had seen that ticket (this was the chatter I referred to) but assumed with 
the Milestone set at 2.0.8  I was hoping this had been fixed by 2.2 – clearly I 
do not understand this terminology!

I will attempt to use this workaround tomorrow – hopefully it will resolve the 
restore issue and I will be back tomorrow full of praise ☺

Santa is bringing me a copy of your “PostrgreSQL: Up and Running book”, so 
hopefully once I am good to go with the basics I can really start to see what 
this combo can do.

Best wishes

Darrel



From: postgis-users 
[mailto:[email protected]<mailto:[email protected]>]
 On Behalf Of Paragon Corporation
Sent: 11 November 2015 21:43

To: 'PostGIS Users Discussion' 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

Darrel,

Sadly you are not the only one.

I have the issue documented here:

https://trac.osgeo.org/postgis/ticket/2485

and I haven't come up with a generic enough fix I feel comfortable  including 
in PostGIS code.

The work-around is to do this


1)      Create your database and do  CREATE EXTENSION postgis;

2)      Then add search paths to the functions used in check constraints

raster_constraint_info_regular_blocking

_raster_constraint_nodata_values
_raster_constraint_out_db

_raster_constraint_pixel_types

e.g.


ALTER FUNCTION _raster_constraint_pixel_types(raster)
  SET search_path=pg_catalog,public,postgis;





3)      Then restore your data.
I'll try to write a full script up in the ticket

Hope that helps,
Regina



From: postgis-users [mailto:[email protected]] On Behalf Of 
Darrel Maddy
Sent: Wednesday, November 11, 2015 2:03 PM
To: PostGIS Users Discussion 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

OK can I come at this from a different direction? Are there any backup options 
I should be selecting to eliminate this problem?

I am really struggling to understand why I cannot backup and restore a raster 
table – surely others have had this issue?  At present while my databases are 
small (i.e. <13GB) I can live with rebuilding if things fall over but these 
tables will grow to TB sizes soon (if I deploy this for real) and I cannot 
contemplate having no reliable backup.

I have been selecting only the default options for backup – should I be doing 
something differently?

Could this be a problem with the raster tables themselves? They seem to work 
with my SQL queries (including putting the tiles together and viewing in QGIS) 
but is there anything I should be doing to them before I select backup? If the 
backup does not report errors does this mean there are no errors in the backup?

I realise I have much to learn using postgres but I see little point in putting 
in that much effort if backup/restore does not work for me.

I really do appreciate the helpful suggestions that have been made so far but 
are there any further suggestions?

Darrel






From: postgis-users [mailto:[email protected]] On Behalf Of 
Darrel Maddy
Sent: 10 November, 2015 10:25 PM
To: PostGIS Users Discussion 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

The default appears to be custom. I did not change anything when I did this. I 
just accepted the defaults.

Darrel

From: postgis-users [mailto:[email protected]] On Behalf Of 
Bborie Park
Sent: 10 November 2015 22:20
To: PostGIS Users Discussion 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

Odd. Looking at your error message again, it looks like the constraint is 
already in place by the time the data is getting loaded...

What are you restoring from? Tar, custom or text?

On Tue, Nov 10, 2015 at 2:16 PM, Darrel Maddy 
<[email protected]<mailto:[email protected]>> wrote:
Dear Bborie,

Apologies, I was obviously not clear – I was not asking about the problem 
itself, I can accept this is a difficult problem to resolve. I was simply 
asking for instruction on how to use your work around. This you kindly 
provided. Alas, however, even with the boxes checked, I get the same error and 
the raster table (dems) is empty.

Darrel

From: postgis-users 
[mailto:[email protected]<mailto:[email protected]>]
 On Behalf Of Bborie Park
Sent: 10 November 2015 21:57

To: PostGIS Users Discussion 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

Given that the core problem has to do with the restore process' search_path, no 
amount of advice will help you get around the restrictions in place with the 
restore process without jumping into that process.

In pgAdmin, you can check the boxes "Pre-data" and "Data" of the "Restore 
Options #1" tab. This won't restore the post-data portion of the backup as 
restoring post-data should be causing your error.

You could also try unchecking the box "Exit On Error" of the "Restore Options 
#2" tab.

-bborie

On Tue, Nov 10, 2015 at 1:29 PM, Darrel Maddy 
<[email protected]<mailto:[email protected]>> wrote:
Dear Bborie,

Yikes – that makes little sense to me.  I am new to both postgres and postgis 
and would have hoped that backup and restore would have been simple push-button 
exercise!

As I am using PgAdmin I have no idea how to follow your instructions ☹

Anyone care to give me an idiots guide?

Sorry

Darrel


From: postgis-users 
[mailto:[email protected]<mailto:[email protected]>]
 On Behalf Of Bborie Park
Sent: 10 November 2015 21:22
To: PostGIS Users Discussion 
<[email protected]<mailto:[email protected]>>
Subject: Re: [postgis-users] restore problem

This problem arises because PostgreSQL sets the search path during the restore 
process. Unfortunately, the search path is quite restrictive.

You should be able to do your restore in three sections using pg_restore's 
--section flag.

The error looks like it has to be the post-data section, which you should 
output to a text file, change the "SET search_path" statements and then run 
through psql.

-bborie

On Tue, Nov 10, 2015 at 1:11 PM, Darrel Maddy 
<[email protected]<mailto:[email protected]>> wrote:
Dear all,

Like many here I suspect I want to keep a copy of my main databases held on my 
workstation, on my laptop. I used PgAdmin to backup the databases concerned 
(the backup files look about the size I was expecting)  but restore on my 
laptop did not successfully complete.  All my shp file tables restored without 
issues but my raster tables (these are tiled rasters) would not. Looking at the 
error in the restore window of PgAdmin this appears to be a problem with a 
function/constraint.

pg_restore: processing data for table "dems"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3459; 0 94054 TABLE DATA dems 
postgres
pg_restore: [archiver (db)] COPY failed for table "dems": ERROR:  function 
st_bandmetadata(public.raster, integer[]) does not exist
LINE 1:  SELECT array_agg(pixeltype)::text[] FROM st_bandmetadata($1...
                                                  ^
HINT:  No function matches the given name and argument types. You might need to 
add explicit type casts.
QUERY:   SELECT array_agg(pixeltype)::text[] FROM st_bandmetadata($1, 
ARRAY[]::int[]);
CONTEXT:  SQL function "_raster_constraint_pixel_types" during inlining
COPY dems, line 1: "1              
0100000100000000000000344000000000000034C0E0CCCCCCB1D517418066666692F80C41000000000000000000000000..."


I did a quick search and found some old chatter on this issue but from the 
messages I read I would have expected this issue to have been cleared up in 
postgis 2 .

Obviously I cannot contemplate having mission critical data in a database which 
does not backup/restore correctly so I am assuming there is a fix which avoids 
this issue or there is another way to make a copy of the database for transfer 
elsewhere?

Once again any help would be gratefully received.

Best wishes

Darrel

ps.   Apologies for the string of questions I have asked lately – I will go 
silent once more shortly as I must move on to other things.

_______________________________________________
postgis-users mailing list
[email protected]<mailto:[email protected]>
http://lists.osgeo.org/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
[email protected]<mailto:[email protected]>
http://lists.osgeo.org/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
[email protected]<mailto:[email protected]>
http://lists.osgeo.org/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
[email protected]<mailto:[email protected]>
http://lists.osgeo.org/mailman/listinfo/postgis-users



--
Richard W. Greenwood, PLS
www.greenwoodmap.com<http://www.greenwoodmap.com>
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to