Как мы переносим / обновляем схему базы данных в Grails? - PullRequest
5 голосов
/ 31 января 2011

Мы некоторое время работали с Grails, и мой руководитель группы поднял несколько вопросов об ORM (GORM) Grails:

  1. Как мы поддерживаем схему базы данных после перехода на производство?
  2. Можем ли мы обновить схему базы данных с помощью Grails?
  3. Если схема будет обновлена, будут ли автоматически отражены изменения / будет ли инфраструктура позаботиться об этом?
  4. есть ли плагин для Grails, который позволит нам обновлять схему без головной боли?

Ответы [ 3 ]

10 голосов
/ 01 февраля 2011

Недавно я выпустил официальный плагин Grails для миграции баз данных - см. http://grails.org/plugin/database-migration и документы по адресу http://grails -plugins.github.com / grails-database -igration / docs / manual / index. HTML

Я работаю с автором Liquibase над этим, поэтому старый плагин liquibase теперь устарел, и следует использовать новый, поскольку он использует последнюю версию Liquibase (2.0) и официально поддерживается SpringSource. См. http://blog.liquibase.org/2011/01/new-standard-liquibase-plugin-grails-database-migration.html для его объявления.

Задайте вопросы об использовании в списке рассылки Grails User (зарегистрируйтесь с http://grails.org/Mailing+lists) или на новом форуме плагинов на http://grails -plugins.847840.n3.nabble.com / или отправьте электронное письмо на адрес автор напрямую:)

4 голосов
/ 31 января 2011
  1. Удалите параметр dbCreate в DataSource.groovy для вашей производственной среды - это остановит GORM от автоматического обновления схемы БД.

  2. Конечно. Используйте плагин LiquiBase .

  3. GORM может сделать это с dbCreate='update', но это настоятельно не рекомендуется. Например, если вы переименуете поле, GORM / LiquiBase никогда не сможет определить необходимость переноса данных, а не просто удалить + создать.

  4. В одной строке: grails db-diff для генерации changelog.xml LiquiBase и grails migrate -Dgrails.env=<whatever environment> для применения к соответствующему серверу БД.

1 голос
/ 31 января 2011

Несмотря на то, что функция «автоматического создания» вполне подходит для запуска проекта, я считаю, liquibase - лучший способ поддерживать БД в актуальном состоянии.Существует плагин grails , и я полагаю, что работа над DSL также ведется.

Итак, создайте базовую схему (вы можете использовать жидкий базис generate-changelog), затем внесите все будущие изменения черезliquibase, и он будет управлять обновлениями, откатами и даже некоторым взаимодействием с БД для вас.Вы можете настроить конфигурацию DataSource.groovy для проверки, и Grails не будет запускаться, если схема не соответствует конфигурации домена:

environments {
    development {
        dataSource {
            dbCreate = "validate"

Вас также может заинтересовать плагин liquibase-runner для запуска миграций при запуске приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...