So löschen Sie einen index in Grails mit Liquibase
Ich habe eine Tabelle generiert, die von GORM (Grails-Domain). Es hat Fremdschlüssel /index, generiert zufällige Zeichen wie FKAC7AAF67162A158F. Ich brauche zu entfernen, das Feld, die nicht mehr benötigt werden.
Probleme, ich habe einige Server, die aktualisiert werden müssen. So brauche ich zum erstellen eines Migrations mit Liquibase. Aber ich habe keine Ahnung, wie zu entfernen index Händisch, wenn der index in zufälligen Namen (jeder server haben unterschiedliche Namen).
ist es möglich, einen index löschen von etwas, ohne zu wissen, seinen Namen ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den index mithilfe der Datenbank-migration-plugin (liquibase). Es erfordert, dass Sie wissen, der index-name, aber der name sollte in deinem vorherigen Migrationen.
Erstellen Sie eine neue migration entfernen Sie den index.
changeSet(author: "[email protected]", id: "1381257863746-1") { sql('DROP INDEX FKAC7AAF67162A158F') }
Entsprechend der MySQL-Handbuch...
wird, geben Informationen über mytable. Es gibt mehrere Felder mit Informationen über die Tabelle und den index, einschließlich einer
Column_name
undkey_name
Felder. Wahrscheinlich können Sie die Sortierung aus, welche Sie benötigen.Danach sollten Sie in der Lage sein, dies auszuführen:
Und boom, nicht mehr index.
Wenn Sie wollen, um ein Skript für die drop index von liqubase, Sie gehen zu müssen, zu tun, einige scripting, da der standard-drop index ist ein index der Namen.
Eine Möglichkeit ist die Verwendung einer benutzerdefinierte Klasse ändern mit dem SQL von Frank ' s Antwort oder Zugriff auf die JDBC-Metadaten, um die tatsächliche index-Namen aus einer Tabelle übergeben.
Eine andere option wäre, eine gespeicherte Prozedur erstellen, die eine Tabelle name als parameter und fragt die information_schema, um die richtigen index-name und löscht es dann.
Einen anderen Weg, dies zu tun mit liquibase wäre Folgendes zu tun:
changeSet(author: "[email protected]", id: "1381257863746-1") {
sql('DROP INDEX FKAC7AAF67162A158F')
}