|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 9 ![]() |
Bonjour a tous,
Etant en fin de migration de serveur, je rencontre quelques problèmes de compatibilité entre postge 8.2 et 7.4. Cette requete : Code :
me renvoie : ERREUR: la fonction trunc(double precision, numeric) n'existe pas HINT: Aucune fonction ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type.explicit type casts. alors qu'elle marche parfaitement sur l'ancien serveur (toujours en prod). Si celà peut aider : marche sur : php4 +postgre 7.4 + windows NT marche pas sur : php5 + postgres 8.2 + linux Je vous remercie par avance pour toute aide. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Tu as mis trunc(PRIX_UNITAIRE, 8.2) alors que le deuxième paramètre doit être un nombre entier correspondant au nombre de décimales à conserver
Exemple : trunc(PRIX_UNITAIRE, 2) |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 9 ![]() |
Merci Scheu pour ta réponse, mais après modification ( remplacer le 8.2 en 2, celà ne change absolument rien :s
Le même message est renvoyé : Requête ratée : select distinct(NUMERO_COMMANDE), NOM_FRS, to_char(trunc(sum(QUANTITE_COMMANDEE), 2), '9990D00') as QUANTITE_COMMANDEE, coalesce(to_char(DATE_LIVRAISON_PREVUE, 'DD-mm-YYYY'), 'Au plus tôt') as DATE_LIVRAISON_PREVUE, STATUT_LIGNE from kr_frs_commande, kr_frs_commande_ligne, kr_fournisseurs where id_commande = commande and date_cloture is null and id_frs = fournisseur and piece_commandee = '1135' group by numero_commande, piece_commandee, nom_frs, date_livraison_prevue, statut_ligne Message : ERREUR: la fonction trunc(double precision, integer) n'existe pas HINT: Aucune fonction ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type.explicit type casts. Je précise que la même requête (avec le 8.2) fonctionne très bien sur le serveur en prod. Peut être une incompatibilité entre pg 8.2 et 7.4??? merci d'avance d'éclairer ma lanterne |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Ce qui est étonnant c'est que ça fonctionnait comme tu dis en 7.4
Dans la doc officielle de la 7.4 comme de la 8.2, le type de la fonction trunc est trunc(v numeric, s int) 7.4 : http://www.postgresql.org/docs/7.4/s...ions-math.html 8.2 : http://www.postgresql.org/docs/8.2/i...ions-math.html Tu confondrais pas le trunc(..., 8.2) avec le type de données decimal(8.2) par hasard ? |
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 9 ![]() |
Citation:
De plus en passant aux autres rubriques du sites à migrer je remarque plein d'autres incompatibilitées comme : ERREUR: Valeur du champ date/time en dehors des limites : «07-31-2009 11:42:08» -> je pense que la date est renvoyée en format anglais MM/JJ/AAAA alors qu'elle devrait être envoyée en format français JJ/MM/AAAA aucune idée comment faire. Désolé mais la BDD ce n'est pas trop mon domaine... |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Pour les dates c'est un autre problème, mais pour ton TRUNC, faut respecter la doc officielle. Peut-être que dans des anciennes versions des abus de notation ou d'utilisation de certaines fonctions marchaient, mais après il ne faut pas s'étonner si un jour les mauvaises syntaxes ne marchent plus.
En même temps, trunc(nombre,8.2) ça ne veut rien dire : TRUNC est pour arrondire des décimaux, soit tu arrondis à 8 décimales, soit à 2 décimales, mais pas à 8.2 décimales |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juillet 2006 Messages : 9 ![]() |
Bonjour,
Je repassais pour prévenir que j'avais réglé mon problème. Malheureusement, comme tu l'a di Scheu, même en remplacant par trunc(..., 2) afin de n'avoir que deux décimales, j'avais la même erreur. J'ai donc supprimé le trunc() et je n'ai logiquement, plus d'erreur. Bizarre tout de même cette fonction assez simple :s En tout cas merci a toi Scheu. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com