Page 1 sur 1
[MySQL] Modif dans la gestion du type float ?
Posté : 12 févr. 2008, 00:10
par pjl
J'ai d'un coté MySQL 5.0.22 - phpMyAdmin 2.9.1.1, la base 1,
de l'autre MySQL 5.0.27 - phpMyAdmin 2.9.0.3, la base 2.
J'ai une table qui a exactement la même structure de chaque coté :
id_part tinyint(4)
id_produit tinyint(4)
quantite float(4,2).
Dans la base 1, je peux écrire en quantité 1000, ca ne pose pas de problème. J'ai bien dans ma table 1000,00
Dans la base 2, lorsque je veux saisir 1000, ca me donne dans ma table 99,99. Il faut que je passe en float(6,2) pour pouvoir stocker 1000.
Avez-vous une idée du problème ?
Posté : 12 févr. 2008, 00:16
par zeus
Alors, pour commencer, il me semble que float(4,2) signifie 4 chiffre affiché dont 2 chiffres après la virgule, soit la valeur maximale 99,99. A confirmer.
Sinon, pour expliquer l'affichage de 1000 dans l'une des 2, serait-ce une phénomène d'arrondi ? Il m'est déjà arrivé d'avoir un arrondi via phpMyAdmin.
Essaye d'afficher le contenu de tes champs directement via la console MySQL, puis depuis un script PHP
Posté : 12 févr. 2008, 00:41
par Hubert Roksor
Ça doit être lié au sql_mode. Essaie un
...sur chacun des serveurs. Je me rappelle que les anciennes versions de MySQL ne suivaient pas les standards et que ça a été corrigé par la suite, selon le sql_mode en cours si mes souvenirs sont bons.
Sinon, essaie de faire une copie de ta table par phpMyAdmin et refais tes tests. Il y a certains détails dont je ne me souviens plus très bien, liés à la version de MySQL sur laquelle la table a été
créée.
Posté : 12 févr. 2008, 00:49
par pjl
J'ai fait les tests dont tu parles plus un.
J'ai voulu modifier une des valeur dans la base n°1, celle d'origine et je me retrouve avec 99,99.
Je crois que le problème est lié à la version d'origine de la base de données.
La base d'origine date d'octobre 2004, ce devait être MySQL 4 voire 3, je ne sais plus.
Comme le PC avait pas mal souffert, j'ai du passer en force d'easyPHP 1.4 ou 1.7 à la version 2.0 en faisant un copier/coller du répertoire ou il y a les données mySQL pour essayer de récupérer cette base de données.
Je pense qu'il doit y avoir une différence dans la facon dont MySQL gère ses floats.
Posté : 12 févr. 2008, 00:53
par Hubert Roksor
T'as dû poster pendant que j'éditais

Essaie de faire une copie de ta table par phpMyAdmin et refais tes tests. De cette façon, la "nouvelle" table sera au bon format.
Tu peux faire un SHOW TABLE STATUS pour voir la version de MyISAM de tes tables.
Posté : 12 févr. 2008, 02:13
par Sékiltoyai
Posté : 25 févr. 2008, 03:04
par pjl
Effectivement, la différence est à partir de la version 3.23 de MySQL.
Je devais vraiment avoir une vieille version de MySQL.
Heureusement que ce n'était pas une BDD pour gérer une centrale nucléaire.
Essaie de faire une copie de ta table par phpMyAdmin et refais tes tests. De cette façon, la "nouvelle" table sera au bon format.
Là, c'est plus un problème de données finalement que de format.
Le format se corrige en 2s, pas les données qui ont été altérées.
Dans mon cas, ca n'a pas été trop grave.
J'ai corrigé le format et j'ai simplement réinséré les données des 2 tables qui posaient problèmes.
L'application mise à jour vit une 2eme vie.