J'ai une table générée par Gorm (domaine Grails). Il a une clé / index étrangère qui a généré des caractères aléatoires tels que FKAC7AAF67162A158F. Je dois supprimer ce champ qui n'est plus nécessaire. P>
Les problèmes, j'ai des serveurs qui doivent être mis à jour. J'ai donc besoin de créer une migration à l'aide de Liquibase. Mais je ne sais pas comment supprimer cet index manuelle si l'index est en nom aléatoir (chaque serveur mon ayant un nom différent). P>
est-il possible de déposer un index de quelque chose sans connaître son nom? p>
4 Réponses :
Mais j'ai généré 4 index générés par Gorm. Chaque index a un champ différent. Donc, j'ai juste besoin de retirer 1 champ uniquement. Un autre problème, j'ai besoin de créer sur Liquibase, donc lors de son exécution, il supprimera l'index. Liquibase a-t-elle "script logique" comme "si autre"?
Déposez-les tous et ajoutez ceux que vous voulez.
Si vous souhaitez script, l'index DROP de Liqubase, vous devrez faire des scripts car l'index de goutte standard nécessite un nom d'index. p>
Une option est d'utiliser un Classe de changement personnalisée Utilisation du SQL de la réponse ou de l'accès de Frank Les métadonnées JDBC pour obtenir le nom d'index réel d'une table passée. P>
Une autre option serait de créer une procédure stockée qui prend un nom de table en tant que paramètre et interroge les informations_schema pour obtenir le nom d'index correct, puis le laisser tomber. P>
Vous pouvez supprimer l'index à l'aide du plug-in Migration de la base de données (LIBIBASE). Cela nécessite que vous connaissiez le nom d'index, mais ce nom devrait être dans l'une de vos migrations précédentes.
changeSet(author: "joe@example.com", id: "1381257863746-1") { dropIndex(indexName: "FKAC7AAF67162A158F", tableName: "answer_option") }
Vous pouvez également effectuer ce qui suit: CHANGEMENTSET (Auteur: "joe@example.com", ID: "1381257863746-1") {SQL ("Index DROP FKAC7AAF67162A158F ')} code>
Une autre façon de faire cela avec Liquibase serait de faire ce qui suit: p>
changeant (auteur: "joe@example.com", ID: "1381257863746-1") {
SQL ('DROP INDEX FKAC7AAF67162A158F')
} code> p>