2011-01-31 12 views
5

Pracujemy z Grails na chwilę, a mój wiodący zespołu budzi pewne pytania o Grails ORM (GORM):W jaki sposób przeprowadzamy migrację/aktualizację schematu bazy danych w Grails?

  1. Jak zachować schematu bazy danych raz przeszliśmy do produkcji?
  2. Czy możemy zaktualizować schemat bazy danych za pomocą Grails?
  3. Jeśli schemat zostanie zaktualizowany, czy zmiany zostaną automatycznie odzwierciedlone/czy struktura zajmie się tym?
  4. Czy jest jakaś wtyczka do Grails, która pozwoli nam zaktualizować schemat bez bólu głowy?

Odpowiedz

10

Niedawno wydany oficjalny plugin Grails do migracji baz danych - patrz http://grails.org/plugin/database-migration i dokumenty w http://grails-plugins.github.com/grails-database-migration/docs/manual/index.html

pracuję z autorem Liquibase na ten temat, więc starsza liquibase wtyczki jest teraz przestarzała i nowy powinien być używany, ponieważ używa najnowszej wersji Liquibase (2.0) i jest oficjalnie wspierany przez SpringSource. Aby uzyskać jego ogłoszenie, patrz: http://blog.liquibase.org/2011/01/new-standard-liquibase-plugin-grails-database-migration.html.

Zadawaj pytania użytkowania na Grails listy użytkownika (zarejestruj konto z http://grails.org/Mailing+lists) lub nowe forum plugin na http://grails-plugins.847840.n3.nabble.com/ lub napisz do autora bezpośrednio :)

+0

Nowa wtyczka DB to zdecydowanie najlepsza opcja – leebutts

1

Choć „Automatyczne tworzenie” funkcjonalność jest ok, aby uzyskać projekt uruchomiony znajdę liquibase najlepszy sposób, aby zachować db up-to-date. Jest grails plugin i uważam, że praca jest również w toku na DSL.

Stwórz więc schemat bazowy (możesz użyć dziennika zmian generowania płynów), a następnie wykonasz wszystkie przyszłe zmiany za pomocą techniki płynnej i będzie on zarządzał aktualizacjami, wycofywaniem zmian, a nawet niektórymi interwałami db dla Ciebie. Można ustawić config DataSource.groovy zweryfikować i Grails nie rozpocznie się, jeśli nie pasuje do schematu config domeny:

environments { 
    development { 
     dataSource { 
      dbCreate = "validate" 

Możesz być także zainteresowany w liquibase-runner plugin uruchomić swoje migracje na starcie programu.

+1

mam teraz próbował wtyczki DB Burta i jest dużo lepiej - stosowanie że ! –

4
  1. Usuń dbCreate parametr w DataSource.groovy dla środowiska produkcyjnego - to zatrzyma Gorm z auto-aktualizacji schematu DB.

  2. Pewnie. Użyj LiquiBase plugin.

  3. GORM może to zrobić z dbCreate='update', ale zdecydowanie nie jest zalecane. Na przykład, jeśli zmienisz nazwę pola, GORM/LiquiBase nigdy nie będzie w stanie określić, czy musisz przenieść dane, a nie tylko upuścić i utworzyć.

  4. W jednym wierszu: grails db-diff wygenerować LiquiBase na changelog.xml i grails migrate -Dgrails.env=<whatever environment> aby zastosować go do odpowiedniego serwera db.

Powiązane problemy