2012-01-25 62 views
72

我得到了一個我無法修復的SQL的愚蠢問題。'dateAdded'的默認值無效

ALTER TABLE `news` 
ADD `dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT , 
ADD PRIMARY KEY ( `dateAdded`) 

錯誤:

(#1067)Invalid default value for 'dateAdded' 

有人可以幫我嗎?

+3

這可能是一個愚蠢的問題,但你爲什麼''AUTO_INCREMENT' DATETIME'? –

回答

115

CURRENT_TIMESTAMP僅在TIMESTAMP字段中可接受。 DATETIME字段必須保留爲空默認值或根本沒有默認值 - 默認值必須是常數值,而不是表達式的結果。

相關文檔:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

您可以解決此通過設置在表插入後觸發填寫任何新的記錄的「現在」的價值。

+52

它看起來像MySQL 5.6.5,你可以使用CURRENT_TIMESTAMP和DATETIME字段。請參閱http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html –

+1

感謝Frank,在嘗試將導出的數據庫從最新的xampp導入到較早的xampp時發現此問題。 –

+0

HCD,Frank ...發現從MariaDb 10.x導出到MariaDB 5.5的相同問題...謝謝 – Aukhan

42

CURRENT_TIMESTAMP是版本特定的,現在允許從版本5.6起的DATETIME列。

請參閱MySQL docs

+3

你確定嗎?我在版本5.7.x中得到了上述錯誤 –

7

當在MySQL 5.7.x上指定DATETIMEDATETIME(3)或類似內容時,還需要注意,您還必須爲CURRENT_TIMESTAMP(3)添加相同的值。如果不是,它將繼續投擲'無效的默認值'。

1

我的MySQL版本5.6.27在我的LEMP和CURRENT_TIMESTAMP作爲默認值工作正常。

0

MySQL版本5.5日期時間設置爲默認CURRENT_TIMESTAMP會報錯 您可以更新到5.6版本值,將它設置日期時間默認值爲CURRENT_TIMESTAMP

0

變化從日期時間類型時間戳,它會工作! 我有mysql的56年5月5日,MariaDB的同一個問題 - MariaDB的服務器 希望它可以幫助...對不起,如果depricated

0

我有同樣的問題, 以下修補程序解決我的問題。

  • 選擇類型爲 '時間戳'

  • 不輸入任何內容長度/值的字段。保持空白

  • 選擇CURRENT_TIMESTAMP作爲默認值。

我使用的是MySQL版本56年5月5日

相關問題