2011-03-16 115 views
4

我有用戶的數據庫架構。它看起來像......數據庫架構,默認值是NOW()

CREATE TABLE `users` (

`id` int(8) unsigned AUTO_INCREMENT, 
`username` varchar(255), 
`password` varchar(40), 
`level` tinyint(1) unsigned DEFAULT 1, 
`time` datetime DEFAULT NOW(), 
`email` varchar(255), 

PRIMARY KEY (`id`) 

) ENGINE=InnoDB; 

有六個領域:ID用戶名密碼水平時間電子郵件,但我想只插入三個他們 - 當用戶註冊時:用戶名,密碼電子郵件。其餘的將有默認值。

問題是MySQL拋出錯誤:#1067 - 'time'的默認值無效。任何想法,傢伙?

回答

5

使用CURRENT_TIMESTAMP,並將列更改爲時間戳。

它是一樣的,但工程(只要你能忍受時間戳) - 這是一個限制。

討論:

  1. http://bugs.mysql.com/bug.php?id=27645
  2. http://forums.mysql.com/read.php?61,67640,67771#msg-67771

所以,你創造成爲

CREATE TABLE `users` (
`id` int(8) unsigned AUTO_INCREMENT, 
`username` varchar(255), 
`password` varchar(40), 
`level` tinyint(1) unsigned DEFAULT 1, 
`time` timestamp DEFAULT CURRENT_TIMESTAMP, 
`email` varchar(255), 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 
0

您需要使用TimeStampDateTime

`time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
0

通常,MySQL不支持將函數作爲默認值。據我所知,只有一個例外:您可以將CURRENT_TIMESTAMP分配到TIMESTAMP列。因此,您需要更改列類型(注意TIMESTAMP不如DATETIME那麼強大),或者依靠觸發器填充值。

0

我們不能讓 「默認CURRENT_TIMESTAMP」 當我的屬性是 「日期時間」,所以我們將改變我們的屬性爲 「時間戳」,如:

time*日期時間* DEFAULT CURRENT_TIMESTAMP,

should be... 

timeTIMESTAMP DEFAULT CURRENT_TIMESTAMP,