Problème mysql

Résolu/Fermé
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 29 mai 2009 à 16:04
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 - 31 mai 2009 à 19:17
Bonjour,

Mon problème est le suivant :
J'ai une table mysql définie ainsi :
`parution` int(4) DEFAULT NULL


mais lorsque j'essaye d'insérer une valeur vide, comme ceci :
INSERT INTO ma_table ( parution ) VALUES ('') ;


le serveur me retourne le message d'erreurs suivant :
Incorrect integer value: '' for column 'parution' at row 1


Je ne comprends pas. Le serveur ne devrait pas mettre NULL par défaut ?

3 réponses

Bonjour

C'est normal, comme indiqué dans la doc mySQL, NULL et la chaine vide '' ne sont pas la même chose. Tu aurais dû mettre
INSERT INTO ma_table ( parution ) VALUES (NULL) ;

Mais ce que je ne comprends pas, c'est que chez moi ton exemple marche, question de version de mySQL peut-être ?
1
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
30 mai 2009 à 09:58
Salut, et merci de ta réponse.

Je n'ai pas le temps d'essayer ça aujourd'hui. Je verrai plus tard.
Mais pour ce qui est du succès de l'opération chez toi, je pense que c'est une histoire du réglage du serveur. Dans my.ini, le paramètre sql-mode ne contient probablement pas "STRICT_TRANS_TABLES".

Je pourrais biensûr l'enlever moi aussi. Dans ce cas ça marche. Mais l'expérience m'a montré quelque fois qu'il vallait mieux programmer vraiment dans les règles de l'art pour ne pas avoir de mauvaises surprises par la suite.
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
31 mai 2009 à 19:17
Ca y est. J'ai essayé ce que tu me recommandais.
Ca marche nikel.

Je pensais que si je rentrais "" dans ma table, le serveur se chargerait d'attribuer la valeur par défaut (NULL, en l'occurence). C'est là que je me trompais.

Merci le père.
0