В Grails необходимо изменить поле в доменном классе на обнуляемое после того, как я уже пошел в производство
У меня есть класс домена со строковым полем, которое я изменяю на nullable. В DataSource.groovy у меня установлен режим "обновление". Есть ли способ заставить Grails изменить MySql, не изменяя "создать" или "создать-падение". Мне нужны данные в MySql.
Следующий вопрос: я могу сделать это изменение вручную с помощью строки "ALTER TABLE myProject_my_domain_class MODIFY the_string varchar(20) NULL;" Это приемлемая практика? Также у меня та же проблема с полем, связывающим другой класс домена:
class myDomainClass {
MyOtherDomainClass otherThing
}
меняется на
class myDomainClass {
MyOtherDomainClass otherThing
static constraints = {
otherThing(nullable:true)
}
}
Если ручной SQL ALTER является единственным способом, как правильно написать команду SQL, чтобы я сохранил индекс ключа между классами домена?
1 ответ
Вы пробовали плагин миграции базы данных?
http://www.grails.org/plugin/database-migration
Процесс его использования немного сложнее ручного, чем просто установка dbCreate="update", но он дает вам гораздо больший контроль и отслеживает изменения, например, делает столбец обнуляемым. Кроме того, вы можете проверить даже ваши небольшие изменения схемы в вашей системе контроля версий, чтобы у вас была запись об изменениях, которые вы делаете.