Ich habe Tabelle wie unten gezeigt. Um eine Standard jetzt Spalte Einschränkung von MySQL zu umgehen habe ich die Spitze als here gezeigtMySQL zwei Spalte Timestamp Standard JETZT Wert ERROR 1067
CREATE TABLE IF NOT EXISTS mytable (
id INT NOT NULL AUTO_INCREMENT ,
create_date TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
update_date TIMESTAMP NULL DEFAULT NOW() ON UPDATE NOW() ,
PRIMARY KEY (`parti_id`))
ENGINE = InnoDB;
Mein sql_mode nicht NO_ZERO_DATE
enthält als here meine Ausgabe zeigte:
mysql> SELECT @@sql_mode;
+------------+
| @@sql_mode |
+------------+
| |
+------------+
1 row in set (0.00 sec)
noch Es gibt der Fehler wie folgt:
ERROR 1067 (42000) at line xx in file: '/myschema.sql': Invalid default value for 'create_date'
Ich benutze MySQL 5.1.37 auf Ubuntu
Wie kann ich es beheben? Vielen Dank.
Dies ist kein Fehler, es ist ein Feature: „Für eine TIMESTAMP-Spalte in einer Tabelle, können Sie den aktuellen Zeitstempel als Standardwert zuweisen können und die Auto-Update-Wert Es ist möglich, dass der aktuelle Zeitstempel der Standardwert für die Initialisierung der Spalte, der Wert für die automatische Aktualisierung oder beides ist.Der aktuelle Zeitstempel kann nicht der Standardwert für eine Spalte und der Wert für die automatische Aktualisierung sein für eine andere Spalte. " –
Die Debatte darüber, ob das ein" Bug "ist oder nicht, bleibt bestehen, da dies ernsthaft nervt. Warum kann ich nicht zwei Zeitstempelspalten mit einem Standardwert von jetzt() mit der zweiten Spalte Auto-Update haben? Die Antwort ist, dass MySQL das nicht tut. Ich nenne das nicht wirklich ein Feature. –
Randy danke für deine Antwort. Ich kenne den von Ihnen angegebenen Link. Ich suche nur nach einem Workaround. Es scheint jedoch, dass alle im Internet gezeigten Tricks einfach nicht funktionieren. –