Проблемы с плагином миграции базы данных Grails

Когда я использую плагин миграции базы данных 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. Я делаю что-то неправильно?

Благодарю.

3 ответа

Решение

Я только что узнал, что если я отредактирую changelog.groovy, чтобы разместить addForeignConstraint после createIndex, это работает как шарм. Еще одна проблема в сценарии генерации журнала изменений.

Я подозреваю, что это на самом деле связано с MySQL, а не с самим плагином. Смотрите эту ошибку: http://bugs.mysql.com/bug.php?id=55465

Ответ Себастьяна - обходной путь.

Согласно этому вопросу / ответу, MYSQL автоматически индексирует столбцы внешнего ключа. Поэтому, когда вы добавляете ограничение внешнего ключа, вам также не нужно определять индекс. Я использую плагин переноса db и просто удаляю записи index для внешних ключей, которые генерирует dbm-gorm-diff.

Я думаю, что это немного лучше, чем изменение имени, так как это, вероятно, создает более одного индекса в одном столбце, что является пустой тратой ресурсов.

Другие вопросы по тегам