go - 用于声明字符串默认值的sql struct标签语法
问题描述
对于字符串类型,我是否需要用 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
解决方案
您可以使用 gorm struct 标记设置默认值 - 我发现 gorm 会忽略 SQL struct 标记(使用 mariadb):
type Car struct {
gorm.Model
Transmission string `gorm:"default:manual"`
}
或者您可以在运行时添加一些类型检查:
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
);
推荐阅读
- c++ - 程序在运行时输出奇怪的随机值
- python - 如何使用描述和不同的填充颜色数组在散景上绘制散点图?
- c++ - QopenGLWidget paintGL 仅由 resizeGL 触发
- r - flextable 包在没有 <- 的情况下分配更改
- scala - 检查自定义序列中是否存在特定键/值
- python - 如何在 OpenCV2 中将 float32 图片写入视频文件?
- angular - 角度模拟服务器响应数据的更好方法?
- http - 是什么导致 nginx & (node / express) 在从上游读取响应标头时抛出错误:(104: Connection reset by peer)
- javascript - 了解在哪里放置 `await` 关键字
- javascript - 当特定单元格包含 0 时以编程方式为行着色