Beim Versuch, Daten in eine Tabelle einzufügen, ohne explizit einen Wert für eine nicht nullbare Spalte anzugeben, die fehlt Wenn Sie einen Standardwert angeben, gibt MySQL möglicherweise einen Fehler aus, der besagt: „Das Feld hat keinen Standardwert“ (Fehler Nr. 1364).
Ein Benutzer ist beim Einfügen in eine Tabelle mit dem folgenden Schema auf diesen Fehler gestoßen:
CREATE TABLE try ( name VARCHAR(8), CREATED_BY VARCHAR(40) NOT NULL );
Es wurde ein Trigger erstellt, um die Tabelle automatisch auszufüllen CREATED_BY-Feld mit dem Benutzernamen:
CREATE TRIGGER autoPopulateAtInsert BEFORE INSERT ON try FOR EACH ROW SET NEW.CREATED_BY = USER();
Es wird jedoch versucht, eine Zeile wie folgt einzufügen Abfrage:
INSERT INTO try (name) VALUES ('abc');
führt immer noch zur Fehlermeldung.
Die Fehlermeldung ist ein Ergebnis der Einstellung des SQL-Modus STRICT_TRANS_TABLES in der MySQL-Konfigurationsdatei ( my.ini oder ähnlich). Dieser Modus erzwingt strenge Regeln bezüglich Standardwerten für Spalten, die keine NULL-Werte zulassen. Um das Problem zu beheben, sollte der Benutzer:
Alternativ kann der Benutzer mit einen Standardwert für das Feld CREATED_BY erstellen die ALTER TABLE-Anweisung. Dieser Ansatz ist jedoch möglicherweise nicht geeignet, wenn der Trigger den Wert dynamisch festlegen soll.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler 1364 aus: „Feld hat keinen Standardwert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!