PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 PL/pgSQL » Erreur GEOMETRYCOLLECTION » 20/11/2013 17:50:34

atchopba
Réponses : 0

Bonjour,

Depuis quelques heures déjà, je galère sur une requête qui me renvoie à chaque fois cette erreur:
----
ERREUR:  Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported.
HINT:  Change argument 1: 'GEOMETRYCOLLECTION(LINESTRING(1651942.75108301 2157948.82656062,1651941.48179...'
----

La requête est:
select * from cad_tmp_ija8pv3iolrb9kl85f8l6g5mm6 where st_within('ma_geometry', wkb_geometry)='t'

J'ai déjà cherché sur ce lien, mais rien y faire.

Please, help me !


Share your knowledge

#2 Re : Général » Valeur par defaut » 13/08/2013 16:25:05

ok ! Merci bien pour toute ton aide.

share your knowledge

#3 Re : Général » Valeur par defaut » 13/08/2013 16:10:18

Tu as de très bonnes idées. Par contre, il y a des tables où il me renvoie 0 qui signifie qu'il n'y a aucun enregistrement qui correspond. Ce que je pense faire maintenant, c'est de créer plutôt un procédure ou fonction qui me permet de mettre les valeurs adéquates. Qu'en penses-tu?

#4 Re : Général » Valeur par defaut » 13/08/2013 15:37:28

J'ai déjà pensé à ta solution, mais il y a plus de 429 tables. Parcourir toutes ces tables !!!!!!! Sachant que je ne sais pas qu'elles sont toutes les tables qui sont à modifiées...
Je vais mourir quoi...

#5 Général » Valeur par defaut » 13/08/2013 15:06:17

atchopba
Réponses : 6

Bonjour,

pendant une migration automatique de MySQL vers PostgreSQL, une "erreur" est survenue: les attributs qui étaient dans MySQL de type DATETIME NOT NULL et ayant pour valeur "0000-00-00 00:00:00" sont passés dans PostgreSQL TIMESTAMP WITHOUT TIME ZONE et sont automatiquement devenus dans tous mes champs "1970-01-01 00:00:00".

Comment pourrai-je y remédier sans toutefois recommencer la migration? J'ai déjà cherché dans pg_attribute, mais je vois le type des mes attributs.

(La leçon est retenue...la prochaine, je ferai un sed pour remplacer et mettre les valeurs adéquates).

Merci bien de me venir en aide.


share you knowledge

#6 Re : PL/pgSQL » Problème INTO dans une procédure stockée » 09/07/2013 08:48:52

ça a marché. Je te remercie bien infiniment bien pour ton aide.

Merci !

#7 Re : PL/pgSQL » Problème INTO dans une procédure stockée » 08/07/2013 09:04:31

Je m'excuse de n'avoir pas tout vérifier quand j'ai fait mon post sur le forum. La requête est ci-bas. Donc d'après ce que tu as dit, si j'ai probablement bien compris, c'est qu'il faut que je mette des INTO sur toutes les colonnes ?

----
CREATE OR REPLACE FUNCTION update_arcligne_update_arret_image_etiquette() RETURNS TRIGGER AS
$BODY$
DECLARE
    idNoeud_arret INTEGER;

BEGIN
    IF (TG_OP = 'UPDATE' OR TG_OP = 'INSERT') THEN
                    SELECT rtna.id_noeud_arret INTO idNoeud_arret, rtna.nom, l.id_ligne, l.numero
                         FROM res_arret rtna
                    JOIN res_no n ON n.id_noeud = rtna.id_noeud_arret
                    JOIN arc arc ON arc.id_amont = n.id_noeud OR arc.id_aval = n.id_noeud
                    JOIN res_ligne rtal ON rtal.id_arc = arc.id_arc
                    JOIN ligne l ON l.id_ligne = rtal.id_ligne
                    ORDER BY rtna.id_noeud_arret;
                    WHERE id_ligne = NEW.id_ligne AND id_arc = idArc;
----

Merci bien !

#8 PL/pgSQL » Problème INTO dans une procédure stockée » 05/07/2013 14:46:19

atchopba
Réponses : 4

Bonjour,

j'ai crée une fonction qui est utilisée dans un trigger. J'ai bien déclarée des variables, mais il y a toujours un hic: un problème avec le INTO. J'ai comme l'impression qu'il ne veut pas de ma variable par la requête est pleine de JOIN.

----
CREATE OR REPLACE FUNCTION update_arcligne_update_arret_image_etiquette() RETURNS TRIGGER AS
$BODY$
DECLARE
    idNoeud_arret INTEGER;
   
BEGIN
    IF (TG_OP = 'UPDATE' OR TG_OP = 'INSERT') THEN
        SELECT id_arret INTO idArret FROM
                    SELECT rtna.id_noeud_arret INTO idNoeud_arret, rtna.nom, l.id_ligne, l.numero
                         FROM res_arret rtna
                    JOIN res_no n ON n.id_noeud = rtna.id_noeud_arret
                    JOIN arc arc ON arc.id_amont = n.id_noeud OR arc.id_aval = n.id_noeud
                    JOIN res_ligne rtal ON rtal.id_arc = arc.id_arc
                    JOIN ligne l ON l.id_ligne = rtal.id_ligne
                    ORDER BY rtna.id_noeud_arret;
                    WHERE id_ligne = NEW.id_ligne AND id_arc = idArc;
----

Et l'erreur est la suivante :

ERREUR:  « idnoeud_arret » n'est pas une variable connue
LINE 21:   SELECT id_noeud_arret INTO idNoeud_arret FROM

Merci de me venir en aide.

Pied de page des forums

Propulsé par FluxBB