gorm 保存未赋值的Time域出错解决方法

gorm 在保存未赋值的Time域时会出现错误,错误信息为“Incorrect datetime value: ‘0000-00-00’ for column ‘域名’ at row 1”。

比如,有这么一个User结构

type User struct {
    UserID    uint64 `gorm:"primaryKey"`
    CreatedAt time.Time
    UpdatedAt time.Time
    LastLogin time.Time
}

当你新建一个User时,LastLogin域肯定是没有值的,这时,用gorm的 Save去保存这个结构的变量,就会出现上述错误。

因为LastLogin允许为空,所以上述结构的定义要修改。只要把LastLogin的类型改为指针就行了。因此,正确的定义如下:

type User struct {
    UserID    uint64 `gorm:"primaryKey"`
    CreatedAt time.Time
    UpdatedAt time.Time
    LastLogin *time.Time
}

LastLogin的类型为指针就告诉gorm,这个域值可以为nil

发表评论