You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决MySQL中的‘Error 1364:字段‘Date’无默认值’错误?

解决MySQL Error 1364: field 'Date' doesn't have a default value 问题

问题根源

你的核心错误是将插入操作拆成了三次独立的INSERT语句,每次仅插入单个字段,但表中EnrollmentId、Date、SchoolId三个字段都被标记为NOT NULL。MySQL的INSERT是针对整行数据的操作:第一次插入EnrollmentId时,Date和SchoolId没有值,直接违反NOT NULL约束触发1364错误,后续语句根本无法执行。关闭严格模式无效,因为NOT NULL约束本身要求字段必须赋值,和严格模式无关。

另外注意:你使用的日期格式'03/01/2023'(MM/DD/YYYY)不符合MySQL默认的DATETIME格式(YYYY-MM-DD HH:MM:SS),直接插入会导致日期解析错误,需要转换格式。

正确解决方案

将每行的三个字段值放在同一个INSERT语句中,一次性插入完整的行数据,同时用STR_TO_DATE函数转换日期格式:

INSERT INTO enrollment (EnrollmentId, Date, SchoolId) VALUES 
('pegsue5687', STR_TO_DATE('03/01/2023', '%m/%d/%Y'), 'tafesa87678645'),
('dangia4965', STR_TO_DATE('03/05/2023', '%m/%d/%Y'), 'tafesa87678645'),
('leegun3465', STR_TO_DATE('03/06/2023', '%m/%d/%Y'), 'tafesa87678645'),
('harkan5690', STR_TO_DATE('03/04/2023', '%m/%d/%Y'), 'tafesa87678645'),
('donsal8774', STR_TO_DATE('03/07/2023', '%m/%d/%Y'), 'tafesa87678645');

补充说明

如果确实需要分批次补全数据(比如先插入ID,后续再补日期和学校ID),必须修改表结构:要么去掉对应字段的NOT NULL约束,要么给字段设置合理的默认值,但这违背了你最初的表设计逻辑。因此优先推荐插入完整行数据的方案。

内容的提问来源于stack exchange,提问作者Kudos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:13:10