Mysql 报错: (1364, “Field ‘id‘ doesn‘t have a default value“)

主要原因:
在于主键表Id 没有设置自增而报错,
解决办法:
设置主键自增

会诱发另一个错误:

Cannot change column 'id': used in a foreign key constraint

在于主键id 已存在外键关系,不允许随意修改主键的属性值,所以我们须得先把外键关联删除之后,在更改主键, 主键更改完毕后,加入外键,就好了

当使用 GORM 进行数据库操作时,如果遇到 `Error 1364 (HY000): Field 'id' doesn't have a default value` 错误,这意味着你在尝试插入一条新记录时,对于某些表中定义为 `NOT NULL` 且没有设置默认值的字段(如 `id`)未提供值。在 SQL 中,`id` 通常作为主键或自增长字段,期望在插入时会自动分配一个唯一的值。 为了解决这个问题,你可以按照以下步骤操作: 1. **为 id 字段添加默认值**:如果你的数据库允许,可以在创建表的时候给 `id` 字段设置一个默认值,比如 `AUTO_INCREMENT` 或者一个固定的值。这取决于你的数据库管理系统(MySQL、PostgreSQL等)。 ```sql -- MySQL 示例 ALTER TABLE your_table MODIFY COLUMN id INT AUTO_INCREMENT PRIMARY KEY; -- PostgreSQL 示例 ALTER TABLE your_table ALTER COLUMN id SET DEFAULT nextval('your_sequence_name::regclass'); ``` 2. **在插入数据时指定默认值**:在 GORM 中,你可以使用 `gorm.NewStruct()` 创建一个新的结构体实例,并用 `gorm.Create()` 方法插入数据,这样 GORM 会自动处理这些默认值。 ```go var newRecord YourModel newRecord.Name = "Some Value" db.Create(&newRecord) // GORM 会自动为 id 分配一个值 ``` 3. **在模型定义中设置默认值**:如果你希望在 GORM 模型中设置默认值,可以使用 `gorm.Field` 属性: ```go type YourModel struct { gorm.Model // 自动包含 GORM 的默认字段,包括 id Name string `gorm:"default:default_value"` } ``` 请确保你执行上述步骤之一,然后再次尝试插入数据。如果有其他相关问题,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lonelypatients°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值