9

当我使用Grails 数据库迁移插件并运行dbm-gorm-diff(例如,在安装 Spring Security Facebook 插件之后)时,我遇到了以下问题:

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

看起来有问题的索引既是 FK 约束,又在生成的升级脚本中作为索引重用。如果我更改名称,从而删除重复项,一切正常。我正在使用Mysql。难道我做错了什么?

谢谢。

4

3 回答 3

9

我刚刚发现,如果我编辑 changelog.groovy 以将 addForeignConstraint 放在 createIndex 之后,它就像一个魅力。我猜是更改日志生成脚本中的另一个问题。

于 2012-05-23T17:30:39.023 回答
2

我怀疑这实际上与 MySQL 有关,而不是与插件本身有关。看到这个错误:http ://bugs.mysql.com/bug.php?id=55465

塞巴斯蒂安的回答是变通。

于 2012-07-15T03:17:55.713 回答
1

根据这个问题/答案,MYSQL 自动索引外键列。因此,当您添加外键约束时,您不需要同时定义索引。我使用 db 迁移插件,只删除 dbm-gorm-diff 生成的外键的“索引”条目。

我认为这比更改名称要好一些,因为这可能会在同一列上创建多个索引,这只是浪费资源。

于 2012-10-05T17:01:04.503 回答