gpt4 book ai didi

go - 保存正在尝试更新 created_at 列

转载 作者:行者123 更新时间:2023-12-04 17:23:35 26 4
gpt4 key购买 nike

我们正在将我们的项目从 v1 更新到 v2。当我们尝试通过仅提供更改的字段作为结构来更新行时,它会尝试设置 created_at 列并返回错误。这在 v1 中起作用。根据文档,在更新操作期间,具有默认值的字段将被忽略。

err := r.writeDB.Save(&Record{
Model: Model{
ID: 1,
},
Name: "AB",
}).Error

if err != nil {
return err
}

生成如下SQL语句

[3.171ms] [rows:0] UPDATE `records` SET `created_at`='0000-00-00 00:00:00',`updated_at`='2020-11-12 15:38:36.285',`name`='AB' WHERE `id` = 1

返回以下错误

Error 1292: Incorrect datetime value: '0000-00-00' for column'created_at' at row 1

有了这些实体

type Model struct {
ID int `gorm:"primary_key,type:INT;not null;AUTO_INCREMENT"`
CreatedAt time.Time `gorm:"type:TIMESTAMP(6)"`
UpdatedAt time.Time `gorm:"type:TIMESTAMP(6)"`
}

type Record struct {
Model
Name string
Details string
}

DB.Omit这允许在执行更新查询时忽略列。但这需要在代码库中进行大量重构。行为是否发生变化或是否缺少某些内容?

最佳答案

这可能对您有所帮助。像这样更改结构字段(或添加以替换默认的 gorm.Model 字段):

CreatedAt time.Time `gorm:"<-:create"` // allow read and create, but don't update

此标签有助于保存创建的数据以防止更新。

关于go - 保存正在尝试更新 created_at 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64806478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com