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 14/02/2011 18:29:21

bluelephant
Membre

Erreur lors de création d'une vue

Bonjour,

Nous avons un système qui créé automatiquement des vues.

Or lorsque l'exécution de la création d'une des vues doit se faire le message suivant arrive :

"failed to find conversion function from unknown to character varying"

Il s'agit d'une vue qui fait l'UNION de 54 requêtes SELECT qui sont basé également sur des vues.

Le système qui créé les vues fonctionne depuis des années. Y-a-t-il une limite dans la définition des vues ?


version PG : 8.4


Il y a 10 sortes de personnes sur Terre, ceux qui savent compter en binaire et les autres.

Hors ligne

#2 14/02/2011 18:41:29

gleu
Administrateur

Re : Erreur lors de création d'une vue

Auriez-vous changé de version de PostgreSQL ?

En tout cas, le message indique que vous essayez de faire passer une colonne d'un type inconnu en un type textuel et qu'il ne dispose pas de la fonction de conversion correspondante.


Guillaume.

Hors ligne

#3 14/02/2011 19:27:00

bluelephant
Membre

Re : Erreur lors de création d'une vue

Effectivement nous étions en 8.2 et nous sommes passé en 8.4 il y a presque 1 an, un potentiel lien ?

Je vais continuer à creuser le système de création des vues pour voir s'il me manque pas quelque chose dans notre processus interne au niveau d'une des vues sur laquelle s'appuie la globale.

Si je n'ai pas gain de cause je reviendrai vers vous.

Merci.


Il y a 10 sortes de personnes sur Terre, ceux qui savent compter en binaire et les autres.

Hors ligne

#4 14/02/2011 20:16:54

gleu
Administrateur

Re : Erreur lors de création d'une vue

Le lien est direct. Un certain nombre de conversions implicites ont été supprimées en 8.3. Du coup, certaines requêtes fonctionnant dans les versions antérieures à la 8.3 ne fonctionnaient plus en 8.3 et ultérieures.

Du coup, la vue que vous créé sans problème en 8.2 peut très bien ne plus être "créable" en 8.4. Il vous faut vérifier la vue en question, il doit y avoir un type de colonne d'une sous-requête qui ne correspond pas au type de cette même colonne dans une autre sous-requête. Recherchez particulièrement les colonnes integer qui seraient automatiquement converties en text. Il y a de fortes chances que cela soit dû à ça.


Guillaume.

Hors ligne

#5 15/02/2011 09:32:59

bluelephant
Membre

Re : Erreur lors de création d'une vue

Ok merci pour cette piste, je reviendrai poster une fois la solution trouvée.

Bonne journée.


Il y a 10 sortes de personnes sur Terre, ceux qui savent compter en binaire et les autres.

Hors ligne

#6 15/02/2011 17:49:16

bluelephant
Membre

Re : Erreur lors de création d'une vue

[RESOLU]

Suite et fin du problème.

En fait nous construisions le BODY des vues qui appelaient des fonctions, créées elles aussi dynamiquement pour être exploitées à la volée par du code.
La définition incluait en guise de paramètre de la clause WHERE le "$1" qui était remplacé par "1" pour tester la syntaxe SQL de la rèquête.

En 8.2, avant la migration, le CAST devait être implicite. Mais avec la 8.4, il faut expliciter le CAST pour éviter ce genre d'erreur.

Voilà.


Il y a 10 sortes de personnes sur Terre, ceux qui savent compter en binaire et les autres.

Hors ligne

Pied de page des forums