SQL - "Out of range value adjusted"

ViPHP
ViPHP | 4039 Messages

19 nov. 2007, 11:32

Si vous aussi tombez sur cette erreur sans arrêt, sans comprendre, voici la solution et le pourquoi en même temps.

La solution rapide, c'est entrer ceci dans le shell mysql:
SET GLOBAL SQL_MODE=”;
La lente, c'est réecrire les requêtes qui posent problème.. (ou modifier le my.ini)

Le souci (de ce que j'ai compris) vient d'une tentative d'insertion d'une valeur vide dans un champ INT.
ex: INSERT INTO nombre(id, nombre) VALUES ('','18')
Avant MySQL 5, ça passait comme une lettre à la poste, mais depuis, plus (d'ou le souci).

Il faut donc soit passer une valeur, soit inscire NULL.

EDIT (important): PS pour la solution rapide: elle risque de corrompre les données, donc dans le cas d'une urgence, éventuellement, mais à réecrivez ou réetudiez vos données le plus rapidement possible.
Modifié en dernier par Berzemus le 19 nov. 2007, 15:26, modifié 1 fois.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

19 nov. 2007, 11:42

Si vous aussi tombez sur cette erreur sans arrêt, sans comprendre, voici [...]
Stoooooooooop. Si vous tombez sur cette erreur sans arrêt, comprenez que vous avez choisi un type de colonne trop limité pour les données que vous essayez d'y rentrer alors changez-le pour le modèle supérieur:
TINYINT -> SMALLINT -> MEDIUMINT -> INT -> BIGINT

Si tu supprimes ce message d'erreur, les données sont corrompues et tu te retrouves à vendre des jet-skis à 255 €... :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 nov. 2007, 12:02

Si tu supprimes ce message d'erreur, les données sont corrompues et tu te retrouves à vendre des jet-skis à 255 €... :roll:
J'en prends un :D

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 nov. 2007, 12:24

Pour aller dans le sens d'Hubert, ce que tu proposes reviens à cacher la poussière sous le tapis en disant "Je vois plus le problème, il n'y a plus de problème" ;)

PS : c'est pas une critique, juste une illustration
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

19 nov. 2007, 12:57

Remplace "poussière" par "charbon incandescent" et tu auras une meilleure idée des répercussions possibles :lol:

ViPHP
ViPHP | 5924 Messages

19 nov. 2007, 14:21

Au passage, l'explication complète est ici : http://dev.mysql.com/doc/refman/5.0/en/ ... -mode.html

Le problème vient du fait que selon le mode de gestion des données, en cas de données invalides, le serveur MySQL peut soit les ramener à des données valides comme il le fait par défaut, soit les rejeter, conformément au standard SQL

ViPHP
ViPHP | 4039 Messages

19 nov. 2007, 15:24

.. donc, le mieux, c'est de réecrire les requêtes ^-^
(merci, apparament, je cernais pas encore l'étendue du problême..)

Ceci dit, je vais devoir le faire, puisque je remarque des inconsistances.. tout à coup, j'ai des jetskis à 255€ dans ma db..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

19 nov. 2007, 22:32

.. donc, le mieux, c'est de réecrire les requêtes
Exactement :pouce: On essaiera toujours de comprendre un message d'erreur pour le corriger à sa source. C'est comme le battement d'aile du papillon, même un tout petit problème comme une variable non définie peut avoir des répercussions catastrophiques, donc en fait on gagne du temps en réparant systématiquement chaque erreur rencontrée.