Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler 1364 aus: „Feld hat keinen Standardwert'?

Warum gibt MySQL den Fehler 1364 aus: „Feld hat keinen Standardwert'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-24 02:59:14688Durchsuche

Why Does MySQL Throw Error 1364:

MySQL-Fehler 1364: Feld verfügt nicht über Standardwerte

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).

Problembeschreibung

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.

Lösung

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:

  1. Öffnen Sie die MySQL-Konfigurationsdatei.
  2. Suchen Sie die Einstellung STRICT_TRANS_TABLES und entfernen oder deaktivieren Sie sie.
  3. Starten Sie den MySQL-Dienst neu .

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn