2016-04-20 23 views
2

Ich erhalte einen Fehler in meiner Datenbank. Ich habe einen ungültigen Standardwert für den Zeitstempel.Ungültiger Standardwert für 'Zeitstempel'

hier ist meine Datenbank:

CREATE TABLE IF NOT EXISTS `post` (
`id` int(11) NOT NULL, 
    `text` varchar(10000) NOT NULL, 
    `threadId` int(11) NOT NULL, 
    `userId` int(11) NOT NULL, 
    `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `isModified` tinyint(4) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=latin1; 



CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL, 
    `name` varchar(100) NOT NULL, 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `color` varchar(10) DEFAULT '#00bcd4', 
    `icon` varchar(100) NOT NULL DEFAULT 'https://mymonas.com/forum/category_icon/ic_question.png' 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; 
+0

Kann ich schlage vor, Sie zu 'UTF8mb4' Ihre Zeichensatz ändern, da dieser Wille umgehen Probleme mit Wyrd Zeichen in der Zukunft. [lese hier mehr] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – Martin

+0

selben Problem, das ich bekam, # 1067 - Ungültiger Standardwert für 'Zeitstempel' –

+0

Oh yeah, Es ist eine Nebensache, keine Lösung für sich. – Martin

Antwort

2

Verwenden CURRENT_TIMESTAMP() statt CURRENT_TIMESTAMP

dh

CREATE TABLE IF NOT EXISTS `post` (
`id` int(11) NOT NULL, 
    `text` varchar(10000) NOT NULL, 
    `threadId` int(11) NOT NULL, 
    `userId` int(11) NOT NULL, 
    `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP(), 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(), 
    `isModified` tinyint(4) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=latin1; 

Now() als auch

+0

gleichen Fehler erneut. error not fix ich setze einfach() aber es funktioniert nicht –

+0

Welche Version von mySQL benutzt du? –

+0

Phpmyadmin Versionsinformation: 4.0.10.7, letzte stabile Version: 4.6.0 und Datenbank Client Version: libmysql - 5.1.73 –

6

arbeitet ich das gleiche Problem wurde, Ich habe den Typ von "datetime" in "timestamp" geändert und es hat funktioniert. Ich habe mysql 5.5.52.

Mysql_error

+0

Horray, es hat funktioniert – vuhung3990

1

Aus dem MySQL 5.5 Handbuch.

„Sie können nicht den Standard für eine Datumsspalte der Wert einer Funktion wie NOW() oder CURRENT_DATE zu sein Die Ausnahme ist, dass Sie können CURRENT_TIMESTAMP als Standard für eine TIMESTAMP-Spalte angeben. "

Die Veränderungen in MYSQL 5.6.x, die die Funktionalität erlauben sind hier dokumentiert:

„Ab MySQL 5.6.5, Zeitstempel- und DATETIME- Spalten automatisch initializated und dem aktuellen Datum aktualisiert werden können und Zeit (also der aktuelle Zeitstempel). Vor 5.6.5 gilt dies nur für TIMESTAMP und für höchstens eine TIMESTAMP-Spalte pro Tabelle. "

So bedeutet dies, Sie verwenden eine ältere Version von MySQL, können Sie entweder verwenden Datumsdatentyp von aktualisieren Sie Ihre MySQL-Version