Sur la base de mes recherches, je dirais que cela pourrait être à la fois une chose "vous" et une chose "MySQL". Vérifiez vos définitions de table avec SHOW CREATE TABLE table_name;
. Prenez note de tous les champs définis avec NOT NULL
.
Le Manuel de référence MySQL 5.6 :13.2.5 Syntaxe INSERT indique :
Cela impliquerait que le mode SQL que vous utilisez n'a pas d'importance. Si vous faites une ligne unique INSERT
(selon votre exemple de code) et en insérant un NULL
valeur dans une colonne définie avec NOT NULL
, il n'est pas censé fonctionner.
Dans le même souffle, ironiquement, si vous deviez simplement omettre la valeur de la liste des valeurs, le manuel de MySQL dit ce qui suit, et le mode SQL est important dans ce cas :
Ainsi, vous ne pouvez pas gagner !;-) Plaisanter. La chose à faire est d'accepter que NOT NULL
sur un champ de table MySQL signifie vraiment Je n'accepterai pas une valeur NULL pour un champ lors de l'exécution d'une seule ligne INSERT
, quel que soit le mode SQL .'
Cela étant dit, ce qui suit du manuel est également vrai :
Alors, courage. Définissez vos valeurs par défaut dans la logique métier (objets) et laissez la couche de données s'en inspirer. Les valeurs par défaut de la base de données semblent être une bonne idée, mais si elles n'existaient pas, les manqueriez-vous ? Si un arbre tombe dans la forêt...