Na základě mého výzkumu bych řekl, že by to mohlo být jak věc „vy“, tak věc „MySQL“. Zkontrolujte definice tabulek pomocí SHOW CREATE TABLE table_name;
. Poznamenejte si všechna pole definovaná pomocí NOT NULL
.
Referenční příručka MySQL 5.6:13.2.5 INSERT syntaxe uvádí:
To by znamenalo, že nezáleží na tom, který režim SQL používáte. Pokud děláte jeden řádek INSERT
(podle vašeho ukázkového kódu) a vložením NULL
hodnotu do sloupce definovaného pomocí NOT NULL
, nemělo by to fungovat.
Stejným dechem, ironicky, pokud byste jednoduše vynechali hodnotu ze seznamu hodnot, příručka MySQL říká následující a na režimu SQL záleží v tomto případě:
Tím pádem nemůžete vyhrát!;-) Dělat si srandu. Je třeba přijmout, že NOT NULL
na poli tabulky MySQL skutečně znamená Nebudu akceptovat hodnotu NULL pro pole při provádění jednoho řádku INSERT
, bez ohledu na režim SQL .'
Vše, co bylo řečeno, platí také následující z návodu:
Tak se vzpamatujte. Nastavte výchozí hodnoty v obchodní logice (objektech) a nechte datovou vrstvu, aby se od toho řídila. Výchozí nastavení databáze se zdají jako dobrý nápad, ale kdyby neexistovaly, chyběly by vám? Pokud v lese spadne strom...