Проблемы с плагином миграции базы данных 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.
Я думаю, что это немного лучше, чем изменение имени, так как это, вероятно, создает более одного индекса в одном столбце, что является пустой тратой ресурсов.