2012-05-12 3 views
9

Wenn ich die Grails Database Migration Plugin und führen ein dbm-gorm-diff (zum Beispiel nach dem Spring Security Facebook-Plugin installieren) Ich habe immer Probleme wie:Grails Database Migration Plugin Probleme

Error: Error executing SQL CREATE INDEX `FK609FD5A460CFCC39` ON `facebook_user`(`user_id`): Incorrect index name 'FK609FD5A460CFCC39' 

Es sieht aus wie der Index in Frage ist eine FK-Bedingung und wird später als Index im generierten Upgrade-Skript wiederverwendet. Wenn ich den Namen ändere, also das Duplikat entfernst, funktioniert alles gut. Ich benutze Mysql. Mache ich etwas falsch?

Danke.

+0

Haben Sie das Plugin bisher erfolgreich benutzt? – David

+0

@David Es ist immer noch ziemlich neu für mich. Ich habe ein paar grundlegende Upgrades ausprobiert und sie haben funktioniert. – skaz

+0

Ich habe gerade darüber nachgedacht, ob du vielleicht 'dbcreate =" .. something .. "' in deiner DataSource.groovy-Datei hast, die mit dem Plugin in Konflikt stehen könnte. Aber wenn du bereits Upgrades vorgenommen hast, scheint das weniger wahrscheinlich zu sein. – David

Antwort

9

Ich habe gerade herausgefunden, dass, wenn ich changelog.groovy zu addForeignConstraints nach createIndex's zu bearbeiten, es wie ein Charme funktioniert. Noch ein weiteres Problem im Changelog-Generierungsskript, denke ich.

+1

Seltsam, diese Lösung hat nicht für mich funktioniert. Ich hatte mehrere 'addForeignConstraints' und mehrere' createIndex's. Das Ändern des Schlüssels erlaubte es jedoch zu arbeiten ... weiß nicht, ob das später irgendwelche negativen Auswirkungen haben wird. – Weezle

2

Ich vermute, dass dies tatsächlich mit MySQL und nicht mit dem Plugin selbst verwandt ist. Siehe diesen Fehler: http://bugs.mysql.com/bug.php?id=55465

Sébastien Antwort ist eine Arbeit um.

1

Gemäß this question/answer indiziert MYSQL automatisch Fremdschlüsselspalten. Wenn Sie also eine Fremdschlüsseleinschränkung hinzufügen, müssen Sie auch keinen Index definieren. Ich benutze das db migration plugin und entferne einfach die 'index' Einträge für Fremdschlüssel, die der dbm-gorm-diff erzeugt.

Ich denke, das ist ein bisschen besser als den Namen zu ändern, da dies wahrscheinlich mehr als einen Index für die gleiche Spalte erstellt, die nur eine Verschwendung von Ressourcen ist.