2017-04-26 64 views
0

如何使用gorm執行Migration?例如,我需要給列添加一個約束。我改變了我的模型(下面的簡單例子),但根據文檔,AutoMigrate方法不會改變列的約束。Gorm - 移植升級列約束

那你怎麼實現呢?我無法找到任何東西在文檔

有用的首發車型:

​​

我想這樣來更新它:

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

您需要手動更改模式。請參閱[ALTER TABLE](https://www.tutorialspoint.com/sql/sql-alter-command.htm)。 – putu

+0

@putu這是我想避免的。 –

+0

如何使用'gorm'的[ModifyColumn](https://godoc.org/github.com/jinzhu/gorm#DB.ModifyColumn)?.例如,請參閱[本文](http://blog.ralch.com/tutorial/golang-object-relation-mapping-with-gorm/)。 – putu

回答

1

當添加not null約束,那麼default值也將需要在現有記錄不符合新標準時添加。該定義是這樣的:

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

正如@putu說,ALTER TABLE肯定會工作,但你仍然需要最初添加默認值,以確保非comforming行滿足新的要求。完成此操作後,您可以根據需要刪除默認值,並且從此時開始遷移將按預期工作。