Heim >Datenbank >MySQL-Tutorial >Warum führt das Hinzufügen einer Spalte in MySQL zu einem Fehler „Ungültiger Standardwert für ‚created_at''?

Warum führt das Hinzufügen einer Spalte in MySQL zu einem Fehler „Ungültiger Standardwert für ‚created_at''?

DDD
DDDOriginal
2024-12-02 11:48:10903Durchsuche

Why Does Adding a Column Result in an

Ungültiger Standardwert für Created_At

Problem:

Beim Versuch, eine Tabelle zu ändern um Beim Hinzufügen einer neuen Spalte tritt ein Fehler auf:

ERROR 1067 (42000): Invalid default value for 'created_at'

obwohl keine Änderungen vorgenommen wurden Zeitstempelspalten.

Lösung:

Der Fehler stammt von sql_modes. So beheben Sie das Problem:

  1. Überprüfen Sie die SQL-Modi:
show variables like 'sql_mode' ;
  1. Deaktivieren Sie problematische Modi:

Entfernen Sie die folgenden Modi aus sql_mode:

NO_ZERO_IN_DATE
NO_ZERO_DATE

Diese Modi sind standardmäßig in neueren MySQL-Versionen vorhanden.

Globale Einstellung:

Für eine systemweite Änderung: Führen Sie Folgendes als Root aus:

set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

Zusätzlich Hinweise:

  • Die neue Spalte kann jetzt hinzugefügt werden, ohne den Fehler auszulösen.
  • Wenn Sie den Standardwert NOT NULL für „created_at“ verwenden möchten, können Sie ihn explizit angeben :
ALTER TABLE investments ADD bank TEXT DEFAULT NOT NULL;

Das obige ist der detaillierte Inhalt vonWarum führt das Hinzufügen einer Spalte in MySQL zu einem Fehler „Ungültiger Standardwert für ‚created_at''?. 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