Ich habe ein dummes Problem mit SQL, das ich nicht beheben kann.
ALTER TABLE `news` ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT, PRIMARY KEY HINZUFÜGEN (`dateAdded`)
Error:
(#1067)Invalid default value for 'dateAdded'
Kann mir jemand helfen?
AUTO_INCREMENT
DATETIME
?Antworten:
CURRENT_TIMESTAMP
ist nur aufTIMESTAMP
Feldern akzeptabel .DATETIME
Felder müssen entweder mit einem Null-Standardwert oder überhaupt 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 Auslöser nach dem Einfügen in der Tabelle festlegen, um einen "Jetzt" -Wert für alle neuen Datensätze einzugeben.
quelle
CURRENT_TIMESTAMP
ist versionenspezifisch und abDATETIME
Version 5.6 für Spalten zulässig .Siehe MySQL-Dokumente .
quelle
Beachten Sie auch, dass Sie bei der Angabe von MySQL 5.7.x
DATETIME
alsDATETIME(3)
oder ähnlich den gleichen Wert für hinzufügen müssenCURRENT_TIMESTAMP(3)
. Wenn nicht, wird weiterhin ' Ungültiger Standardwert ' ausgegeben .quelle
Ich hatte das gleiche Problem, nach der Behebung wurde mein Problem gelöst.
Wählen Sie Typ als 'TIMESTAMP'
Geben Sie nichts in das Feld Länge / Wert ein. HALTE ES LEER
Wählen Sie CURRENT_TIMESTAMP als Standardwert aus.
Ich verwende MySQL Version 5.5.56
quelle
Ich habe MySQL-Version 5.6.27 auf meinem LEMP und CURRENT_TIMESTAMP als Standardwert funktioniert gut.
quelle
In MySQL Version 5.5 wird der Standardwert für die Datumszeit als CURRENT_TIMESTAMP festgelegt. Es handelt sich um einen Berichtsfehler, den Sie auf Version 5.6 aktualisieren können. Der Standardwert für die Datumszeit wird als CURRENT_TIMESTAMP festgelegt
quelle
Ändern Sie den Typ von Datum / Uhrzeit in Zeitstempel 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 beraubt ist
quelle