Gorm - 通过迁移升级列约束

标签 go go-gorm

如何使用 gorm 进行迁移?例如,我需要向列添加约束。我更改了模型(下面的简化示例),但根据文档,AutoMigrate 方法不会更改列的约束。

那你如何实现呢?我在文档中找不到任何有用的内容

起始型号:

type User struct {
    gorm.Model
    Name     string
}

我想这样更新:

type User struct {
    gorm.Model
    Name     string   `gorm:"not null"`
}

最佳答案

添加not null约束时,还需要添加default值,以应对现有记录不满足新条件的情况。定义可能类似于:

type User struct {
    gorm.Model
    Name     string   `gorm:"not null;default:'fillertext'"`
}

正如@putu所说,ALTER TABLE肯定会起作用,但是您仍然需要最初添加一个默认值,以确保不合格的行满足新的要求。完成此操作后,您可以根据需要删除默认值,并且从那时起迁移将按预期进行。

关于Gorm - 通过迁移升级列约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633108/

相关文章:

forms - 使用 Gomail 创建联系表单

go - Golang 中的闭包 - 不显示字符串

mysql - golang sql driver的prepare语句

Go迁移不会创建外键

go - SELECT WHERE with updated_at 是错误的

xml - Golang Gokogiri递归xpath异常

unit-testing - 何时使用 httptest.Server 和 httptest.ResponseRecorder

go - 是否可以将结构的 slice 作为接口(interface)传递给方法?

Go GORM Preload & Select only items 匹配预加载表条件

mysql - 如何使用 gorm 获取多个用户的数据?