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

MySQL插入数据报Field 'category_id' doesn't have a default value错误如何解决

问题根因

category_id是你表的主键,主键约束要求该字段必须非空且唯一。你在建表时既没有为该字段设置自动生成规则,也没有配置默认值,插入数据时未传入category_id的取值,MySQL无法填充主键字段因此抛出报错。

可行解决方案

方案1:插入时主动传入主键值

手动为category_id指定唯一值即可,示例代码:

INSERT INTO category (category_id, category_name) VALUES ("cate001", "test");

方案2:修改表结构让主键自动生成(更推荐)

一般主键使用自增整数类型更高效,不需要手动维护取值,修改表结构的命令如下:

ALTER TABLE category 
-- 可根据数据量调整为BIGINT类型
MODIFY COLUMN category_id INT NOT NULL AUTO_INCREMENT;

修改完成后,你原来的插入语句就可以正常执行了:

INSERT INTO category (category_name) VALUES ("test");

方案3:保留CHAR类型主键并配置自动生成的默认值

如果业务要求必须使用CHAR类型作为主键,可以给字段设置默认值为自动生成的唯一UUID:

ALTER TABLE category 
ALTER COLUMN category_id SET DEFAULT (UUID());

配置后插入数据时不需要传category_id,MySQL会自动生成唯一的字符串填充该字段。

注意:如果表中已经存在数据,修改category_id字段属性前要确保现有字段值符合修改后的类型要求,避免修改失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:39:02