dedlfix: (MySQL) Obwohl Feld NOT NULL, einfügen möglich?

Beitrag lesen

Hi!

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| kdnr         | int(11)      | NO   | PRI | NULL    | auto_increment |

Ein Feld, das keine NULL-Werte erlaubt kann kein NULL als Default-Wert haben. Diese Tabelle schwindelt.

Ich verstehe nicht, wie man Tabellen sonst anlegen soll/kann. Bei create table habe ich mal alle NULL weggenommen, aber dennoch wird so eine gleichwertige Tabelle erzeugt:

Hmm, die Ausgabe wird tatsächlich von SHOW COLUMNS so erzeugt. Man muss dann das NULL in der Default-Spalte vermutlich so interpretieren, dass kein Default-Wert festgelegt wurde. Es wird dann wohl ein typspezifischer Default-Wert verwendet, wobei ich dazu auf die Schnelle keine Auflistung fand.

...einen Datensatz einfüge, indem k_checksum absichtlich nicht vorkommt, kann dieser Datensatz trotzdem gespeichert werden? Wieso?
Der Defaultwert der tatsächlich aktiv ist, wird eingefügt.
Da der Defaultwert ja NULL ist, wie kann er dann in ein Feld, das NOT NULL ist, eingefügt werden?

Er ist nicht gesetzt und evaluiert augenscheinlich zu einem Leerstring.

Ok, der Sinn der Meldung mit der o.g. create-table-Syntax ist mir auch nicht wirklich klar:
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1364 | Field 'k_checksum' doesn't have a default value |
+---------+------+-------------------------------------------------+

Ah, sieh an. Es ist kein Default-Wert explizit angegeben worden. Wenn man das tut (DEFAULT ''), dann zeigt SHOW COLUMNS auch kein NULL mehr in der Spalte Default an.

Lo!