有人可以告诉我这个查询中缺少什么吗?它不断提出:
错误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;
答案 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
上找到如何执行此操作