Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich MySQL-FEHLER 1067: Ungültiger Standardwert für „created_at'?

Warum erhalte ich MySQL-FEHLER 1067: Ungültiger Standardwert für „created_at'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-04 08:40:11893Durchsuche

Why Am I Getting MySQL ERROR 1067: Invalid Default Value for 'created_at'?

Fehlerbehebung bei MySQL-FEHLER 1067: Ungültiger Standardwert für „created_at“ beim Hinzufügen einer neuen Spalte

Versuch, eine Tabelle durch Hinzufügen einer neuen zu ändern Spalte kann zu dem Fehler „FEHLER 1067 (42000): Ungültiger Standardwert für“ führen 'erstellt_at'". Dieser Fehler tritt häufig auf, wenn Zeitstempelspalten geändert werden. Es kann jedoch auch beim Hinzufügen von Nicht-Zeitstempel-Spalten auftreten.

Ursache:

Der Fehler wird durch die sql_modes-Einstellungen von MySQL verursacht. Insbesondere verhindern die Modi „NO_ZERO_IN_DATE“ und „NO_ZERO_DATE“, dass die Standardzeitstempelwerte „0000-00-00“ und „00:00:00“ in den Spalten „created_at“ und „update_at“ gespeichert werden.

Lösung :

Um den Fehler zu beheben, entfernen Sie das Modi „NO_ZERO_IN_DATE“ und „NO_ZERO_DATE“ aus der sql_modes-Einstellung.

Schritte:

  1. Aktuell überprüfen sql_modes:

    show variables like 'sql_mode' ; 
  2. Anstößige Modi entfernen:

    • Modi für die aktuelle Sitzung vorübergehend deaktivieren :

      SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    • Stellen Sie die globalen Modi ein dauerhaft:

      SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
  3. Spalte erneut hinzufügen:

    ALTER TABLE investments ADD bank TEXT;

Hinweis:

Der standardmäßige sql_mode in neueren Versionen von MySQL umfasst die Modi „NO_ZERO_IN_DATE“ und „NO_ZERO_DATE“. Daher ist es wichtig, die sql_modes-Einstellung regelmäßig zu überprüfen und die erforderlichen Anpassungen vorzunehmen, wenn dieser Fehler auftritt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich MySQL-FEHLER 1067: 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