2017-04-26 2 views
0

Wie führe ich eine Migration mit gorm durch? Zum Beispiel muss ich eine Einschränkung zu einer Spalte hinzufügen. Ich habe mein Modell geändert (vereinfachtes Beispiel unten), aber die AutoMigrate-Methode ändert gemäß den Dokumenten die Nebenbedingungen der Spalte nicht.Gorm - Aktualisieren der Spaltenbeschränkung mit Migration

Wie erreichen Sie es dann? Ich kann nichts, die in der docs

Startmodell finden:

type User struct { 
    gorm.Model 
    Name  string 
} 

ich es so aktualisieren möchten:

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

Sie müssen das Schema manuell ändern. Siehe [ALTER TABLE] (https://www.tutorialspoint.com/sql/sql-alter-command.htm). – putu

+0

@putu das möchte ich vermeiden. –

+0

Wie wäre es mit 'gorm's [ModifyColumn] (https://godoc.org/github.com/jinzhu/gorm#DB.ModifyColumn) ?. Sehen Sie [diesen Beitrag] (http://blog.ralch.com/tutorial/golang-object-relation-mapping-with-gorm/) zum Beispiel Verwendung. – putu

Antwort

1

Wenn eine not null Einschränkung hinzufügen, dann ein default Wert wird auch müssen hinzugefügt werden, wenn die vorhandenen Datensätze die neuen Kriterien nicht erfüllen. Die Definition könnte sein, so etwas wie:

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

Wie @putu sagte ALTER TABLE wird sicherlich funktionieren, aber Sie müßten noch einen Standardwert hinzuzufügen, zunächst die nicht-comforming Reihen die neuen Anforderungen gerecht zu gewährleisten. Sobald dies geschehen ist, können Sie den Standardwert entfernen, wenn Sie möchten, und die Migration wird ab diesem Zeitpunkt wie beabsichtigt funktionieren.

Verwandte Themen