В Grails необходимо изменить поле в доменном классе на обнуляемое после того, как я уже пошел в производство - PullRequest
1 голос
/ 10 мая 2011

У меня есть класс домена со строковым полем, которое я заменяю на 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 Ответ

2 голосов
/ 10 мая 2011

Вы пробовали плагин переноса базы данных?

http://www.grails.org/plugin/database-migration

Процесс его использования немного сложнее, чем просто установка dbCreate = "update", но он дает вам гораздо больший контроль и отслеживает изменения, такие как внесениестолбец обнуляемый.Кроме того, вы можете проверить даже свои небольшие изменения схемы в вашей системе контроля версий, чтобы у вас была запись изменений, которые вы внесли.

...