2017-04-26 1 views
0

Comment effectuer une migration avec gorm? Par exemple, j'ai besoin d'ajouter une contrainte à une colonne. J'ai changé mon modèle (exemple simplifié ci-dessous), mais la méthode AutoMigrate, selon les docs, ne changera pas les contraintes de la colonne.Gorm - Mise à niveau de la contrainte des colonnes avec migration

Comment l'atteignez-vous alors? Je ne peux pas trouver quelque chose d'utile dans la documentation

modèle de départ:

type User struct { 
    gorm.Model 
    Name  string 
} 

Je voudrais mettre à jour comme celui-ci:

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

Vous devez modifier le schéma manuellement. Voir [ALTER TABLE] (https://www.tutorialspoint.com/sql/sql-alter-command.htm). – putu

+0

@putu c'est ce que je voudrais éviter. –

+0

Comment utiliser 'gify' [ModifyColumn] (https://godoc.org/github.com/jinzhu/gorm#DB.ModifyColumn) ?. Voir [cet article] (http://blog.ralch.com/tutorial/golang-object-relation-mapping-with-gorm/) pour un exemple d'utilisation. – putu

Répondre

1

Lorsque vous ajoutez une contrainte not null, une valeur default sera également doivent être ajoutés lorsque les enregistrements existants ne répondent pas aux nouveaux critères. La définition pourrait être quelque chose comme:

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

Comme @putu dit, ALTER TABLE va certainement travailler, mais vous auriez encore besoin d'ajouter une valeur par défaut initialement pour assurer les lignes non comforming répondent aux nouvelles exigences. Une fois cela fait, vous pouvez supprimer la valeur par défaut si vous le souhaitez et la migration fonctionnera comme prévu à partir de ce point.