是否需要为字符串类型加上qoutes ('')
type Car struct {
Transmission string `gorm:"column:transmission" sql:"DEFAULT:'manual'" json:"transmission"`
}type Car struct {
Transmission string `gorm:"column:transmission" sql:"DEFAULT:manual" json:"transmission"`
}在db中,data_type是ENUM
发布于 2021-03-03 11:33:46
您可以使用gorm标记设置默认值-我发现gorm (使用mariadb)忽略了struct标记:
type Car struct {
gorm.Model
Transmission string `gorm:"default:manual"`
}或者,您可以在go侧添加一些类型检查:
type Transmission string
const (
Automatic Transmission = "automatic"
Manual Transmission = "manual"
)
func (t *Transmission) Scan(value interface{}) error {
*t = Transmission(value.([]byte))
return nil
}
func (t Transmission) Value() (driver.Value, error) {
return string(t), nil
}
type Car struct {
gorm.Model
Transmission Transmission `gorm:"default:manual"`
}无论哪种方式,我都必须在mariadb中直接定义枚举,它不会通过gorm的自动转换函数产生枚举。
create table demo.cars (
transmission enum('automatic', 'manual') default 'manual' not null
);发布于 2021-03-03 11:41:42
简而言之,是的,您需要用引号括住这个值。
string `sql:"DEFAULT:'default_value'"`否则,它将查找默认或声明的函数。
https://stackoverflow.com/questions/66453540
复制相似问题