Opierając się na moich badaniach, powiedziałbym, że może to być zarówno kwestia „ty”, jak i „MySQL”. Sprawdź definicje tabeli za pomocą SHOW CREATE TABLE table_name; . Zanotuj wszystkie pola zdefiniowane za pomocą NOT NULL .
Podręcznik MySQL 5.6 Reference:13.2.5 Składnia INSERT stany:
Oznaczałoby to, że nie ma znaczenia, jakiego trybu SQL używasz. Jeśli robisz pojedynczy wiersz INSERT (zgodnie z przykładowym kodem) i wstawienie NULL wartość do kolumny zdefiniowanej za pomocą NOT NULL , to nie powinno działać.
Jak na ironię, jednym tchem, gdybyś po prostu pominął wartość z listy wartości, podręcznik MySQL mówi, co następuje, a tryb SQL ma znaczenie w tym przypadku:
Dlatego nie możesz wygrać!;-) Żartuję. Należy zaakceptować, że NOT NULL na polu tabeli MySQL naprawdę oznacza, że nie zaakceptuję wartości NULL dla pola podczas wykonywania pojedynczego wiersza INSERT , niezależnie od trybu SQL ”.
Biorąc to wszystko pod uwagę, poniższe informacje z instrukcji są również prawdziwe:
Więc nabierz otuchy. Ustaw wartości domyślne w logice biznesowej (obiekty) i pozwól warstwie danych przyjąć kierunek od tego. Domyślne ustawienia bazy danych wydają się dobrym pomysłem, ale gdyby nie istniały, czy byś ich nie zauważył? Jeśli drzewo spadnie w lesie...