Gorm - обновление ограничения столбцов с миграцией

Как выполнить миграцию с помощью gorm? Например, мне нужно добавить ограничение к столбцу. Я изменил свою модель (упрощенный пример ниже), но метод AutoMigrate, согласно документации, не изменит ограничения столбца.

Как же тогда этого добиться? Я не могу найти в документации ничего полезного

Стартовая модель:

type User struct {
    gorm.Model
    Name     string
}

Я бы хотел обновить его вот так:

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

person Daniel Morandini    schedule 26.04.2017    source источник
comment
Схему нужно изменить вручную. См. ALTER TABLE.   -  person putu    schedule 27.04.2017
comment
@putu вот чего я бы хотел избежать.   -  person Daniel Morandini    schedule 27.04.2017
comment
Как насчет использования ModifyColumn gorm? Пример использования см. В этом сообщении.   -  person putu    schedule 27.04.2017


Ответы (1)


При добавлении ограничения not null необходимо также добавить значение default, если существующие записи не соответствуют новым критериям. Определение может быть примерно таким:

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

Как сказал @putu, ALTER TABLE, безусловно, будет работать, но вам все равно нужно будет сначала добавить значение по умолчанию, чтобы гарантировать, что несоответствующие строки соответствуют новым требованиям. Как только это будет сделано, вы можете удалить значение по умолчанию, если хотите, и с этого момента миграция будет работать должным образом.

person Taylor Frey    schedule 09.05.2017