Comment faire pour supprimer un index dans Graal avec Liquibase
J'ai une table générée par GORM (Graal de Domaine). Il a foreign key /index générés de manière aléatoire des personnages comme FKAC7AAF67162A158F. J'ai besoin de supprimer ce champ n'a plus besoin.
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 n'ai aucune idée de comment le supprimer de l'index à la main si l'index se trouvent dans un nom aléatoire (chaque serveur de mon ont nom différent).
est-il possible de supprimer un index de quelque chose sans savoir son nom ?
OriginalL'auteur nightingale2k1 | 2009-11-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez supprimer l'index à l'aide de la base de données-migration plugin (liquibase). Il nécessite que vous connaissez le nom de l'index, mais ce nom doit être dans une de vos précédentes migrations.
Créer une nouvelle migration pour supprimer l'index.
changeSet(author: "[email protected]", id: "1381257863746-1") { sql('DROP INDEX FKAC7AAF67162A158F') }
OriginalL'auteur Jay P.
Selon la Manuel MySQL...
retourne des informations sur la mytable. Il revient à plusieurs champs avec les informations sur le tableau et son index, y compris un
Column_name
etkey_name
champs. Vous pouvez probablement de la sorte que l'on vous avez besoin.Après cela, vous devriez être en mesure d'exécuter le présent:
Et boum, pas plus d'indice.
Déposez-les tous et ajouter ceux que vous voulez.
OriginalL'auteur Frank DeRosa
Si vous êtes désireux de script de la baisse de l'indice de liqubase, vous allez avoir besoin de faire quelques scripts depuis le standard drop index nécessite un nom d'index.
Une option est d'utiliser un personnalisé changer de classe à l'aide de SQL à partir de Frank réponse ou d'accéder aux métadonnées JDBC pour obtenir le véritable nom de l'index à partir d'un passé à table.
Une autre option serait de créer une procédure stockée qui prend un nom de table comme un paramètre et les requêtes de la information_schema pour obtenir le nom de l'index, puis il tombe.
OriginalL'auteur Nathan Voxland
Une autre manière de faire avec liquibase serait de faire ce qui suit:
changeSet(author: "[email protected]", id: "1381257863746-1") {
sql('DROP INDEX FKAC7AAF67162A158F')
}
OriginalL'auteur Spencer Powell