2014-11-22 62 views
0

有人能告訴我我在這個查詢中缺少什麼嗎?它不斷想出:EndDate的錯誤1067無效默認值

錯誤1067:無效的默認值EndDate

CREATE TABLE `course_info`(
`student_id` VARCHAR (35), 
`course_id` INT NOT NULL AUTO_INCREMENT, 
`name`  VARCHAR(45) NOT NULL, 
`module` VARCHAR(45) NOT NULL, 
`StartDate` TIMESTAMP, 
`EndDate` TIMESTAMP, 
`course_Update` TIMESTAMP, 
PRIMARY KEY(`course_id`), 
FOREIGN KEY(`student_id`) 
REFERENCES student(`student_id`) 
) 
ENGINE = InnoDB; 

回答

1

你可以瞭解你的錯誤從官方documentation的原因:

的NO_ZERO_DATE模式會影響服務器是否允許'0000-00-00' 作爲有效日期。其效果也取決於嚴格SQL模式是否啓用了 。

  • 如果未啓用此模式,則允許使用'0000-00-00',插入不會產生警告。
  • 如果啓用此模式,則允許使用'0000-00-00',插入會產生警告。
  • 如果啓用了此模式和嚴格模式,則不允許使用'0000-00-00',並且插入會產生錯誤,除非IGNORE良好地給出爲 。對於INSERT IGNORE和UPDATE IGNORE,允許使用'0000-00-00' ,插入會產生警告。

,因爲它說,你可以插入0000-00-00日期與IGNORE選項。這是爲了插入。

在你的情況,你所要做的就是在NOT NULL約束添加到您的TIMESTAMP領域,以避免默認值0000-00-00如下:

StartDate TIMESTAMP NOT NULL, 
EndDate TIMESTAMP NOT NULL, 
course_Update TIMESTAMP NOT NULL, 

編輯1:

在您的評論之後,如果您在Windows上啓用嚴格的SQL模式,則需要編輯my.cnf文件(如果您位於Linux或my.ini文件中)。你會發現如何做到這一點SQL-mode

+0

我做了你告訴我要做的事情,但它仍然會出現相同的錯誤。 :S – Edrian 2014-11-22 13:19:40

+0

@Edrian就像你在你的問題上所說的那樣聲明你的表並且你有同樣的錯誤? – 2014-11-22 13:22:45

+0

@Edrian你使用的是linux還是windows? – 2014-11-22 13:24:11

相關問題