错误1067 EndDate的默认值无效

时间:2014-11-22 11:32:32

标签: mysql

有人可以告诉我这个查询中缺少什么吗?它不断提出:

  

错误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 个答案:

答案 0 :(得分:1)

您可以从官方documentation了解错误原因:

  

NO_ZERO_DATE模式会影响服务器是否允许'   作为有效日期。它的效果还取决于严格的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:

根据您的评论,如果您使用的是Linux或my.ini文件,则需要编辑my.cnf文件(如果您在Windows上启用严格的SQL模式)。您将在SQL-mode

上找到如何执行此操作