Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich „Ungültiger Standardwert für „create_date'', wenn ich „0000-00-00 00:00:00' als Standard für ein TIMESTAMP-Feld in MySQL verwende?

Warum erhalte ich „Ungültiger Standardwert für „create_date'', wenn ich „0000-00-00 00:00:00' als Standard für ein TIMESTAMP-Feld in MySQL verwende?

DDD
DDDOriginal
2024-10-31 15:37:01252Durchsuche

Why am I getting

Behebung eines ungültigen Standardwerts für das TIMESTAMP-Feld in MySQL

Beim Versuch, eine Tabelle mit einem TIMESTAMP-Feld zu erstellen und einen Standardwert von „anzugeben“ 0000-00-00 00:00:00‘, kann die Fehlermeldung „Ungültiger Standardwert für ‚create_date‘“ auftreten. Dies liegt häufig an einer SQL-Moduseinstellung des MySQL-Servers.

Erklärung

Der SQL-Modus NO_ZERO_DATE erzwingt Strenge bei der Handhabung von Nulldaten. Es verhindert das Einfügen von „0000-00-00“ als gültiges Datum und betrachtet es als ungültigen Wert.

Lösung

Um den Fehler zu beheben, können Sie Folgendes tun: :

  • Deaktivieren Sie den NO_ZERO_DATE SQL-Modus:

    <code class="mysql">SET SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION';</code>
  • Verwenden Sie die Option IGNORE, um das Einfügen von Nulldaten zu ermöglichen:

    <code class="mysql">CREATE TABLE IF NOT EXISTS `erp`.`je_menus` (
      `id` INT(11) NOT NULL AUTO_INCREMENT ,
      `name` VARCHAR(100) NOT NULL ,
      `description` VARCHAR(255) NOT NULL ,
      `live_start_date` DATETIME NULL DEFAULT NULL ,
      `live_end_date` DATETIME NULL DEFAULT NULL ,
      `notes` VARCHAR(255) NULL ,
      `create_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' IGNORE,
      `created_by` INT(11) NOT NULL ,
      `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
      `updated_by` INT(11) NOT NULL ,
      `status` VARCHAR(45) NOT NULL ,
      PRIMARY KEY (`id`)
    ) ENGINE = InnoDB;</code>

Sobald Sie diese Anpassungen vorgenommen haben, sollten Sie in der Lage sein, die Tabelle mit dem angegebenen Standardwert für das TIMESTAMP-Feld erfolgreich zu erstellen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Ungültiger Standardwert für „create_date'', wenn ich „0000-00-00 00:00:00' als Standard für ein TIMESTAMP-Feld in MySQL verwende?. 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