MySQL versucht standardmäßig, ungültige Werte für eine Spalte auf den korrekten Typ zu zwingen. Hier ist die leere Zeichenfolge ''
vom Typ string, der weder eine ganze Zahl noch NULL ist. Ich empfehle folgende Schritte:
INSERT INTO foo (bar) VALUES (NULL);
Sie fügen NULL
nicht in die Tabelle ein; Sie fügen eine leere Zeichenfolge ein (die scheinbar als int auf Null abgebildet wird). Denken Sie daran, dass NULL
ein eindeutiger Wert in SQL ist. %Code%. Durch Angabe eines Wertes (außer NULL != ''
) fügen Sie nicht NULL
ein. Der Standardwert wird nur verwendet, wenn Sie keinen Wert angeben. In Ihrem Beispiel haben Sie einen String-Wert für eine Integer-Spalte angegeben.
Warum sollte es ein NULL sein? Sie stellen einen Wert bereit, der eine ganzzahlige Darstellung aufweist: Leere Zeichenfolgen werden in INT
0
konvertiert.
Nur wenn Sie keinen Wert angegeben haben, würde der Standardwert übernehmen.