Frage Ungültiger Standardwert für "dateAdded"


Ich habe ein dummes Problem mit SQL, das ich nicht beheben kann.

ALTER TABLE "Nachrichten"
 ADD `dateAdded` DATETIME NICHT NULL STANDARD CURRENT_TIMESTAMP AUTO_INCREMENT,
 PRIMÄRSCHLÜSSEL HINZUFÜGEN (`dateAdded`)

Error:

(#1067)Invalid default value for 'dateAdded'

Kann mir jemand helfen?


75
2018-01-25 15:58


Ursprung


Antworten:


CURRENT_TIMESTAMP ist nur akzeptabel auf TIMESTAMP Felder. DATETIME Felder müssen entweder mit einem Null-Standardwert oder gar keinem Standardwert belassen werden - Standardwerte müssen ein konstanter Wert sein, nicht das Ergebnis eines Ausdrucks.

relevante Dokumente: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Sie können dies umgehen, indem Sie einen Post-Insert-Trigger für die Tabelle festlegen, um einen "Now" -Wert für alle neuen Datensätze auszufüllen.


120
2018-01-25 16:05



CURRENT_TIMESTAMP ist versionsspezifisch und ist jetzt erlaubt DATETIME Spalten ab Version 5.6.

Sehen MySQL-Dokumente.


44
2017-09-17 10:44



Beachten Sie auch, wenn Sie angeben DATETIME wie DATETIME(3) oder wie auf MySQL 5.7.x, müssen Sie auch den gleichen Wert für hinzufügen CURRENT_TIMESTAMP(3). Wenn nicht, wird es weiterwerfen.Ungültiger Standardwert".


9
2017-07-06 08:44



Ich habe mysql Version 5.6.27 auf meinem LEMP und CURRENT_TIMESTAMP als Standardwert funktioniert gut.


0
2017-10-06 14:39



mysql Version 5.5 set Datetime Standardwert als CURRENT_TIMESTAMP wird Bericht Fehler sein Sie können auf Version 5.6 aktualisieren und den Datetime-Standardwert als CURRENT_TIMESTAMP festlegen


0
2017-12-08 06:55



Ändere den Typ von Datetime zu Timestamp und es wird funktionieren! Ich hatte das gleiche Problem für mysql 5.5.56-MariaDB - MariaDB Server Ich hoffe, es kann helfen ... Entschuldigung, wenn es entzogen wird


0
2017-11-13 16:23



Ich hatte das gleiche Problem, folgende Lösung löste mein Problem.

  • Wählen Sie Typ als 'TIMESTAMP'

  • NICHT IN LÄNGE / WERTE FIELD EINGEBEN. Halte es frei 

  • Wählen Sie CURRENT_TIMESTAMP als Standardwert aus.

Ich verwende MySQL Version 5.5.56


0
2017-12-07 18:00