IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[9.3] Problème fonction Populate_geometry_columns


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut [9.3] Problème fonction Populate_geometry_columns
    Bonjour,

    Je suis sous Postgrès 9.3 avec la cartouche spatiale Postgis 2.1.

    Lorsque j'exécute un "populate_geometry_columns ()" j'ai le message suivant qui s'affiche dans PgAdmin :

    ERREUR: la fonction populate_geometry_columns() n'est pas unique
    LINE 1: SELECT populate_geometry_columns ()
    ^
    HINT: N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez
    avoir besoin d'ajouter des conversions explicites de type.

    ********** Erreur **********
    ERREUR: la fonction populate_geometry_columns() n'est pas unique
    État SQL :42725
    Astuce : N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez
    avoir besoin d'ajouter des conversions explicites de type.
    Caractère : 8
    Est-ce-que quelqu'un saurait me dire d'où provient ce message d'erreur ?
    J'avais déjà exécuté cette fonction il y a quelques jours et elle ne semblait pas poser de problèmes.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    plpgsql accepte plusieurs fonctions de même noms mais (obligatoirement!) de types de paramètres (en entrée) différents. C'est le polymorphisme ou surcharge.
    En appelant une fonction il faut donc lui passer un paramètre d'entrée s'il existe des fonctions de même nom.
    @+

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Bonjour et merci pour le retour.

    En appelant une fonction il faut donc lui passer un paramètre d'entrée s'il existe des fonctions de même nom
    Personnellement je ne connais pas les paramètres d'entrée à rajouter... quelqu'un les connaîtrait-il ?

    Pour information :

    Pour importer des données provenant d'une version antérieure de Postgis j'ai été amené à charger d'anciennes fonctions grâce à "legacy.sql" (C:\Program Files\PostgreSQL\9.3\share\contrib\postgis-2.1). Je me demande donc si ce n'est pas ça qui a causé mon problème en "dupliquant"/"modifiant" des fonctions.

    J'ai alors essayé d'appliquer une deuxième requête qui semble être prévue pour annuler la première "uninstall_legacy.sql" mais celle-ci remonte des erreurs

    ERREUR: n'a pas pu supprimer fonction srid(geometry) car d'autres objets en dépendent
    En tous cas la fonction populate_geometry_columns ne fonctionne toujours pas.

    Une piste ?

    Merci

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Responsable Technique
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable Technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    Pour la doc de la fonction, tu l'as ici

    Pour la fonction srid(geometry) c'était avec les "vielles" version de postgis, maintenant c'est ST_srid(geometry).
    Pour la suppression sûrement que la fonction srid() est utilisée à l'intérieur d'anciennes fonctions et si le code sql essaye de supprimer srid() en premier, cela met ce genre d'erreur.

    C'est quoi exactement qui t'a obligé à réutiliser des anciennes fonctions postgis, tu parles de récupérer d'anciennes données, mais je ne comprends pas .

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Bonsoir,

    Ce qui m'a amené à charger d'anciennes fonctions Postgis c'est la migration d'une base utilisant un Postgis 1.5 vers une nouvelle base utilisant un Postgis 2.1 en passant par un dump. La restauration du dump plantant en indiquant que des fonctions étaient manquantes... donc chargement du "legacy.sql"... puis réussite de la restauration dans la nouvelle base.

    J'ai finalement obtenu la solution à mon problème... qui n'en était finalement pas un... grâce à collègue de mon réseau professionnel. Citation :

    En fait, avec les version > 2.0 de PostGIS, tu n'as plus besoin d'utiliser les fonctions populate ...
    Dans les versions 1.X, PostGIS fonctionnait avec une table geometry_columns.. dans les version 2.X, cette table est devenu une vue qui identifie toutes les tables et,normalement, requêtes qui contiennent de la géométrie.
    Et, en effet, les améliorations de performances obtenues "jadis" par le biais de la fonction populate sont désormais obtenues grâce à la vue. Dans mon cas perso, en tous cas, il ne s'avère donc plus nécessaire d'utiliser cette fonction.

    Merci tout de même pour l'assistance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème : Fonctions et commande Execute
    Par bubi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 11h01
  2. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo