Въз основа на моите изследвания бих казал, че може да бъде както „вие“, така и „MySQL“. Проверете дефинициите на вашите таблици с SHOW CREATE TABLE table_name;
. Обърнете внимание на всички полета, дефинирани с NOT NULL
.
Справочно ръководство за MySQL 5.6:13.2.5 синтаксис INSERT заявява:
Това би означавало, че няма значение кой SQL режим използвате. Ако правите единичен ред INSERT
(съгласно вашия примерен код) и вмъкване на NULL
стойност в колона, дефинирана с NOT NULL
, не би трябвало да работи.
На същия дъх, по ирония на съдбата, ако просто пропуснете стойността от списъка със стойности, ръководството на MySQL казва следното и SQL режимът има значение в този случай:
Следователно не можете да спечелите!;-) Шегувам се. Това, което трябва да направите, е да приемете, че NOT NULL
в поле на MySQL таблица наистина означава няма да приема NULL стойност за поле, докато изпълнявам INSERT
на един ред , независимо от SQL режим .'
Като се има предвид всичко казано, следното от ръководството също е вярно:
Така че, вземете сърце. Задайте вашите настройки по подразбиране в бизнес логиката (обекти) и оставете слоя данни да поеме посока от това. Базите данни по подразбиране изглеждат добра идея, но ако не съществуваха, бихте ли ги пропуснали? Ако дърво падне в гората...