2011-02-26 59 views
12

我有一個兩個時間戳字段的表。我只是用名稱和類型TIMESTAMP來定義它們,但由於某些原因,MySQL自動將其中一個設置爲默認值和屬性on update CURRENT_TIMESTAMP。我打算在任何一個字段中都沒有默認值,但其中一個字段被稱爲「date_updated」,所以我想我可以將提到的屬性設置爲該字段。爲什麼MySQL不允許我刪除屬性「關於更新CURRENT_TIMESTAMP」?

不幸的是,它的字段「date_created」是由on update CURRENT_TIMESTAMP屬性設置的,無論我做什麼,MySQL都不會讓我刪除它。

我試過編輯「date_created」字段並刪除屬性。點擊保存時,屬性返回。我也嘗試選擇兩個字段,從其中一個字段中刪除屬性並將其設置在另一個字段上。它給我的錯誤#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause,突然在這兩個數值屬性列設置爲on update CURRENT_TIMESTAMP結果:

Error 
SQL query: 

ALTER TABLE `pages` CHANGE `date_created` `date_created` TIMESTAMP NOT NULL , 
CHANGE `date_updated` `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL 

MySQL said: 

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

我必須真正按照正確的順序來解決這個重建這兩個列?

我想知道如何正確解決這個問題,以供將來參考。

感謝


現在我也想跑

ALTER TABLE pages 
CHANGE date_created 
date_created TIMESTAMP NOT NULL 

回答

16

應指定DEFAULT CURRENT_TIMESTAMP(或DEFAULT 0

ALTER TABLE pages CHANGE date_created date_created TIMESTAMP NOT NULL DEFAULT 0, 
CHANGE `date_updated` `date_updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL 
+0

是DEFAULT NULL的選擇呢? – GolezTrol 2011-02-26 13:40:58

+0

@GolezTrol nope,因爲它被定義爲NOT NULL,所以它不能爲NULL – meze 2011-02-26 18:54:29

+2

它總是需要默認嗎?對於NOT NULL時間戳類型,我的意思是。我遇到同樣的問題,但無法刪除默認設置。 – 2013-12-09 16:30:49

相關問題