2011-01-31 3 views
5

Hemos estado trabajando con Grails por un tiempo y mi equipo principal planteado algunas preguntas sobre el Griales ORM (GORM):¿Cómo migramos/actualizamos el esquema de la base de datos en Grails?

  1. ¿Cómo mantenemos el esquema de base de datos una vez que se ha pasado a la producción?
  2. ¿Podemos actualizar el esquema de la base de datos con Grails?
  3. Si se actualiza el esquema, ¿se reflejarán automáticamente los cambios/el marco se ocupa de esto?
  4. ¿Hay algún complemento para Grails que nos permita actualizar el esquema sin dolores de cabeza?

Respuesta

10

Recientemente he lanzado el plugin oficial Grails para las migraciones de bases de datos - ver http://grails.org/plugin/database-migration y la documentación en http://grails-plugins.github.com/grails-database-migration/docs/manual/index.html

estoy trabajando con el autor de Liquibase en esto, por lo que la mayor Liquibase plugin es ahora obsoleto y el nuevo debe ser utilizado ya que utiliza la última versión de Liquibase (2.0) y es oficialmente compatible con SpringSource. Ver http://blog.liquibase.org/2011/01/new-standard-liquibase-plugin-grails-database-migration.html para su anuncio.

Hacer preguntas sobre el uso de la lista de correo del usuario Grails (Registrar desde http://grails.org/Mailing+lists) o el nuevo foro de plug-in en http://grails-plugins.847840.n3.nabble.com/ o correo electrónico directamente con el autor :)

+0

El nuevo plugin DB definitivamente es la mejor opción – leebutts

1

Si bien la funcionalidad de "creación automática" está bien para poner en marcha un proyecto, encuentro liquibase la mejor manera de mantener el db actualizado. Hay un grails plugin y creo que también se está trabajando en una DSL.

Por lo tanto, cree un esquema de línea base (puede usar el registro de cambios de generación de liquibase) luego realice todos los cambios futuros a través de liquibase y administrará las actualizaciones, reversiones e incluso algunas interferencias de db por usted. Puede configurar su configuración DataSource.groovy para verificar y griales no comenzará hasta si el esquema no coincide con el dominio de configuración:

environments { 
    development { 
     dataSource { 
      dbCreate = "validate" 

Puede que le interesen también la liquibase-runner plugin para ejecutar sus migraciones al iniciar la aplicación.

+1

Ahora he intentado plugin de DB de Burt y es mucho mejor - El uso que ! –

4
  1. Retire dbCreateDataSource.groovy parámetro en el entorno de producción - esto detendrá GORM del esquema de base de datos de actualización automática.

  2. Sure. Use LiquiBase plugin.

  3. GORM puede hacerlo con dbCreate='update', pero no se recomienda. Por ejemplo, si cambia el nombre de un campo, GORM/LiquiBase nunca podrá determinar si debe migrar los datos, y no solo soltar + crear.

  4. En una línea: grails db-diff para generar LiquiBase changelog.xml, y grails migrate -Dgrails.env=<whatever environment> para aplicarlo al servidor de db respectivo.

Cuestiones relacionadas