一、报错

  在gorm用map进行更新时,虽然设置了自动更新时间,但是在更新时报错:Error 1292: Incorrect datetime value: ‘1655178473’ for column ‘updated_at’ at row 1

image-1691673199346
 
 
表结构为:
image-1691673208849

 
实现代码:

func Update(id uint, name,description string) error {
	whereMap := map[string]interface{}{}
	whereMap["name"] = name
	whereMap["description"] = description
	err := repo.db.Model(&entity.Project{}).Where("id = ?", id).Updates(whereMap).Error
	return err
}

 

二、原因

  原因暂时没找到,有大佬知道的可以指教下~ 万分感谢~
 

三、解决

方案一:
  手动更新时间:whereMap["updated_at"] = time.Now()

func (repo ProjectRepo) UpdateProject(id uint, name,description string) error {
	whereMap := map[string]interface{}{}
	whereMap["name"] = name
	whereMap["description"] = description
	whereMap["updated_at"] = time.Now()    //手动更新时间
	err := repo.db.Model(&entity.Project{}).Where("id = ?", id).Updates(whereMap).Error
	return err
}

方案二:
  实体结构体中,忽略CreatedAt和UpdatedAt的更新,更新实现代码不变

CreatedAt time.Time `gorm:"<-:false"`
UpdatedAt time.Time `gorm:"<-:false"`

 
 
有小伙伴知道更好方法的,欢迎留言~ 感谢~