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

Extensions PostgreSQL Discussion :

Problème avec schéma autre que public


Sujet :

Extensions PostgreSQL

  1. #1
    Membre à l'essai
    Problème avec schéma autre que public
    Bonjour

    J'utilise l'extension postgis de postgresql mais j'ai un problème depuis que je travaille avec un autre schéma que public, celui par défaut.
    Lors des créations de tables et insertions avec mon_schema.ma_table sans utiliser les fonctions postgis tout se passe très bien.
    Par contre, dans une table nommée track, j'ai une colonne géométrique trk_ne donc de type mon_schema.geometry et lorsque je tente une insertion dans cette table j'ai une erreur à cause de la colonne géométrique:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    INSERT INTO mon_schema.track VALUES (..., ST_SetSRID(ST_MakePoint(3.2198183,50.4165317), 4326),...);
    ERROR: column "trk_ne" is of type kinomap.geometry but expression is of type geometry
    LINE 2: ...1,'','0','1',0.0,0.0,0.0,0,3,'0','0','0',46,1,0,2,ST_SetSRID...
    ^
    HINT: You will need to rewrite or cast the expression.

    ********** Erreur **********

    ERROR: column "trk_ne" is of type kinomap.geometry but expression is of type geometry

    Pouvez-vous m'aider svp??

    Merci

  2. #2
    Membre éclairé
    Bonjour,

    Je peux me tromper, mais il semblerait plutôt qu'il s'agisse d'un souci de CAST de données plutôt qu'un souci de schéma... Mais je ne connaît pas le type de données kinomap...

    Pouvez-vous faire un
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    \d+ tablename

    sur la table track de votre schéma et sur votre table de test dans le schéma public?

    Cordialement,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

  3. #3
    Membre à l'essai
    Pardon , j'ai oublié de vous préciser que kinomap est mon schéma.

    La commande \d+ tablename je le tape où?

  4. #4
    Membre éclairé
    Citation Envoyé par sarah59 Voir le message

    La commande \d+ tablename je le tape où?
    Sous psql.
    A bove ante, ab asino retro, a stulto undique caveto

  5. #5
    Membre éclairé
    J'ai trouvé un commentaire ici http://blog.daniel-azuma.com/archives/69 qui explique qu'il faut bien setter le search path du user qui effectue la requête sous risque d'échouer avec l'erreur qu'on vient de voir.

    Il faudrait donc que vous fassiez :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ALTER DATABASE votreBase SET search_path = ‘$user’,'kinomap’,'public’;


    Cordialement,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

  6. #6
    Membre à l'essai
    \d+ table sur les 2 tables me donne le même résultat hormis le nom de la table évidemment kinomap.track et public.track.

  7. #7
    Membre à l'essai
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ALTER DATABASE votreBase SET search_path = ‘$user’,'kinomap’,'public’;


    J'avais déjà essayé mais ça ne marche pas non plus.

  8. #8
    Membre à l'essai
    C'est bon, ça marche avec:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    SET search_path = "$user", "kinomap", "public";


    Merci