2016-04-20 104 views
2

我在數據庫中收到錯誤。我遇到了無效的默認值時間戳。'timestamp'的默認值無效

這裏是我的數據庫:

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

我可以建議你改變你的角色設置成'UTF8mb4'的日期時間數據類型,因爲這會未來將使用wyrd字符來回避問題。 [更多這裏](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – Martin

+0

我得到了同樣的問題,#1067 - '時間戳'的默認值無效 –

+0

噢,這是一個旁白,而不是一個解決方案本身。 – Martin

回答

2

使用CURRENT_TIMESTAMP(),而不是CURRENT_TIMESTAMP

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()的作品,以及

+0

再次出現同樣的錯誤。錯誤沒有解決我只是把(),但它不會工作 –

+0

你使用哪個版本的mySQL –

+0

Phpmyadmin版本信息:4.0.10.7,最新穩定版本:4.6.0和數據庫客戶端版本:libmysql - 5.1.73 –

6

我有同樣的問題,我將類型從「datetime」更改爲「timestamp」,它工作。我有MySQL 5.5.52。

Mysql_error

+0

horray,它的工作 – vuhung3990

1

從MySQL的5.5手動:

「你不能設置一個日期欄默認是一個函數的值,如NOW()或CURRENT_DATE的例外是,您可以指定CURRENT_TIMESTAMP作爲TIMESTAMP列的默認值。「

在MYSQL 5.6.x允許功能的變化在這裏記載:

「在MySQL 5.6.5中,TIMESTAMP和DATETIME列可以自動initializated和更新到當前的日期和時間(即當前時間戳)在5.6.5之前,這僅適用於TIMESTAMP,並且每個表最多隻有一個TIMESTAMP列。「

因此,這意味着你正在使用MySQL的是舊版本,要麼你可以使用升級你的MySQL版本

相關問題