Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 26/06/2019 09:52:10
- pifor
- Membre
Erreur pg_restore "opérateur n'existe pas"
Bonjour
Nous utilisons :
# select version();
version
---------------------------------------------------------------------------------------------------------------
PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16), 64-bit
(1 ligne)
avec:
# select postgis_full_version();
NOTICE: Function postgis_topology_scripts_installed() not found. Is topology support enabled and topology.sql installed?
postgis_full_version
----------------------------------------------------------------------------------------------------------------------------------------------------
POSTGIS="2.1.8 r13780" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.9.1, 04 March 2015" GDAL="GDAL 1.9.2, released 2012/10/08" LIBXML="2.7.6" RASTER
(1 ligne)
Nous exportons une base avec pg_dump et nous l'importons avec pg_restore.
Avant de lancer pg_restore, je supprime la base cible et je la recrée vide.
Le pg_restore est lancé sans option particulière:
pg_restore -v -d <base> -h <hostname> -p <port> -U <compte superuser> <fichier dump>.
pg_restore a plusieurs erreurs du type suivant:
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: l'opérateur n'existe pas : public.geometry && public.geometry
LIGNE 1 : SELECT $1 && $2 AND _ST_Intersects($1,$2)
^
ASTUCE : Aucun opérateur ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
REQUÊTE : SELECT $1 && $2 AND _ST_Intersects($1,$2)
CONTEXTE : fonction SQL « st_intersects » durant « inlining »
La commande était : CREATE MATERIALIZED VIEW dr_vue_cons_geo_zone_batie_hors_zae AS
WITH zone_bati_hors_zae AS (
SELECT sbat.gid,
...
La base source et la base cible ont exactement la même version PostgreSQL et la même version de PostGIS.
On est bloqué sur cette erreur car la seule référence que j'ai trouvé pour ce type d'erreur est liée à des upgrades mais on ne fait pas d'upgrade.
Est-ce que quelqu'un a une piste ?
Merci.
Dernière modification par pifor (26/06/2019 09:54:43)
Pierre
Hors ligne
#2 26/06/2019 16:07:09
- rjuju
- Administrateur
Re : Erreur pg_restore "opérateur n'existe pas"
Bonjour,
PostgreSQL 9.4.4
vous avez 19 versions mineures de retard, soit plus de 4 ans. Je vous conseille vivement de mettre à jour au plus vite.
Quelle version de pg_restore utilisez-vous ? Postgis est-il bien installé dans le schéma public?
Julien.
https://rjuju.github.io/
Hors ligne
#3 26/06/2019 16:23:17
- pifor
- Membre
Re : Erreur pg_restore "opérateur n'existe pas"
C'est bien pg_restore 9.4.4 qui est utilisé. PostGIS est bien installé dans le schéma public.
On a aussi du retard dans la version de postGIS: j'ai réussi à faire fonctionner pg_restore en utilisant une version plus récente d'une fonction:
diff postgis--2.1.8.sql.26062019 postgis--2.1.8.sql
3461c3461
< AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
---
> AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Intersects($1,$2)'
et en modifiant le paramètrage de l'extension:
diff postgis.control.26062019 postgis.control
5c5,6
< relocatable = true
---
> relocatable = false
> schema = public
Dernière modification par pifor (26/06/2019 16:23:59)
Pierre
Hors ligne
Pages : 1