2012-05-12 7 views
9

ときdbm-gorm-diff(例えば、春のセキュリティFacebookのプラグインをインストールした後に)私のような問題になってきていますGrailsのデータベース移行プラグインの問題は、私が<a href="http://grails.org/plugin/database-migration">Grails Database Migration Plugin</a>を使用して実行

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

それが問題のインデックスのように見えますは両方ともFK制約であり、生成されたアップグレードスクリプトの後のインデックスとして再利用されます。名前を変更して重複を削除すると、すべて正常に動作します。私はMySQLを使用しています。私は何か間違っているのですか?

ありがとうございました。

+0

プラグインを正常に使用していますか? – David

+0

@Davidそれはまだかなり新しいです。私はいくつかの基本的なアップグレードを試み、彼らは働いた。 – skaz

+0

あなたのDataSource.groovyファイルに 'dbcreate =" .. something .. "があると、プラグインと競合している可能性があります。しかし、あなたがすでにアップグレードを行っている場合、それはあまり起こりそうにないようです。 – David

答えて

9

changelog.groovyを編集してaddForeignConstraintをcreateIndexの後に置くと、それは魅力的なように機能することが分かりました。私が推測するchangelog生成スクリプトのさらに別の問題。

+1

奇妙なことに、この解決法は私のためには機能しませんでした。私は複数の 'addForeignConstraint'と複数の' createIndex'を持っていました。キーを変更すると動作するようになりましたが...後でそれが悪影響を受けるかどうかはわかりません。 – Weezle

2

これは実際にはMySQLに関連するものであり、プラグイン自体には関係しないと思われます。このバグを参照してください:http://bugs.mysql.com/bug.php?id=55465

セバスティアンの答えは回避です。

1

this question/answerによると、MYSQLは自動的に外部キー列にインデックスを付けます。したがって、外部キー制約を追加する場合は、インデックスを定義する必要はありません。 db migrationプラグインを使用し、dbm-gorm-diffが生成する外部キーの 'index'エントリを削除するだけです。

これは名前を変更するより少し良いと思います。これは、同じ列に複数のインデックスが作成される可能性があります。これはリソースの無駄です。

関連する問題