MYSQL Erreur 1048 sur valeur null

Fermé
TTNK - 9 janv. 2009 à 11:56
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 9 janv. 2009 à 15:24
Bonjour,

J'ai une question concernant l'erreur 1048 de mysql : #1048 - Le champ [...] ne peut être vide (null) .

Dans les documentation(version 4 ou 5) on peut lire :

Si vous essayez de stocker NULL dans une colonne qui n'accepte pas la valeur NULL, MySQL stocke 0 ou '' (la chaîne vide). Ce dernier comportement peut, pour des insertions de ligne unique, être modifié par l'option de compilation -DDONT_USE_DEFAULT_FIELDS. See Section 2.4.2, « Options habituelles de configure ». Cela fait que les commandes INSERT génèreront une erreur à moins que vous ne spécifiez explicitement les valeurs pour toutes les colonnes qui requièrent une valeur non-NULL.

Neanmoins je constate deux comportement différent :
Dans certains cas à l'insertion de valeurs NULL dans un champ NOT NULL, MYSQL renvoie l'erreur 1048, et dans d'autre non.

exemple1 :
CREATE TABLE toto (nb INTEGER NOT NULL DEFAULT 0);
INSERT INTO toto VALUES(NULL);
Renvoi erreur 1048...

exemple2 :
CREATE TABLE toto (
nb INTEGER NOT NULL DEFAULT 0
nb2 INTEGER NOT NULL DEFAULT 0
nb3 INTEGER NOT NULL DEFAULT 0
);
INSERT INTO toto
SELECT [...];
Le résultat du SELECT renvoi certaines valeurs NULL, mais cette fois-ci je n'ai pas l'erreur 1048.

Quelqu'un peut-il me dire pourquoi?

Merci d'avance!
A voir également:

2 réponses

Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
9 janv. 2009 à 12:58
probablement parce que la valeur de ta première requête est explicitement NULL là où ça ne devrait pas l'être, et là où le default est paramétré différement, en gros, tu forces les choses^^
0
Merci pour ta réponse rapide, mais là ou je m'étonne c'est que selon la doc, le premier cas ne devrait pas non plus renvoyer d'erreur.
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
9 janv. 2009 à 15:24
si j'comprends bien la doc, ça dépend de la configuration^^, il faudrait que tu y jettes un oeil
0