MySQL新手求助:ERROR 1364与ERROR 1136报错解决方法
解决MySQL插入数据的两个报错问题
错误1:ERROR 1364 (HY000): Field 'Item_name' doesn't have a default value
原因
items表的Item_name字段既没设置默认值,也没开启**允许为空(NULL)**属性。MySQL插入数据时,若未指定该字段的值,会因找不到默认值触发报错。
解决办法
两种可选方案:
- 方案1:修改表结构,让
Item_name允许为空
执行以下SQL(把VARCHAR(255)替换成你实际使用的字段类型和长度):ALTER TABLE items MODIFY COLUMN Item_name VARCHAR(255) NULL; - 方案2:修改表结构,给
Item_name设置默认值
比如设置默认值为空字符串:ALTER TABLE items MODIFY COLUMN Item_name VARCHAR(255) DEFAULT '';
错误2:ERROR 1136 (21S01): Column count doesn't match value count at row 1
原因
你指定了要插入4个字段(Item_code,Item_name,Qty,Price),但每个值组里只提供了1个值(比如('X01')),列数和值的数量不匹配,导致报错。
解决办法
如果要插入所有字段,每个值组必须提供对应数量的值。若部分字段暂无数据,可使用NULL(前提是字段允许为空)或对应默认值:
INSERT INTO items(Item_code, Item_name, Qty, Price) VALUES ('X01', '商品1', 10, 29.9), ('X02', '商品2', 5, 19.9), ('X03', '商品3', 8, 39.9), ('X04', '商品4', 15, 9.9), ('X05', '商品5', 20, 59.9), ('X06', '商品6', 7, 14.9), ('X07', '商品7', 12, 24.9), ('X08', '商品8', 3, 69.9), ('X09', '商品9', 18, 44.9), ('X10', '商品10', 4, 79.9) ON DUPLICATE KEY UPDATE Item_code = VALUES(Item_code);
如果只需要插入Item_code,先通过错误1的解决方法处理其他字段(允许为空或设置默认值),再使用你最初的插入语句即可。
额外提示:ON DUPLICATE KEY UPDATE仅在Item_code是主键或唯一键,且插入值已存在时才会执行更新操作。若Item_code不是主键/唯一键,这个子句不会生效。
内容的提问来源于stack exchange,提问作者Athiradh A
相关产品推荐
相关产品推荐

