(Quick Reference)

3.3.3 Migraciones automáticas de bases de datos - Reference Documentation

Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith

Version: null

3.3.3 Migraciones automáticas de bases de datos

The dbCreate property of the DataSource definition is important as it dictates what Grails should do at runtime with regards to automatically generating the database tables from GORM classes. The options are described in the DataSource section:

  • create
  • create-drop
  • update
  • validate
  • no value

In development mode dbCreate is by default set to "create-drop", but at some point in development (and certainly once you go to production) you'll need to stop dropping and re-creating the database every time you start up your server.

La propiedad dbCreate de la definición del DataSource es importante ya que dicta lo que debe hacer Grails en tiempo de ejecución con respecto a la generación automática de las tablas de base de datos de clases GORM. Las opciones se describen en la sección DataSource:

  • create
  • create-drop
  • update
  • validate
  • no value

En modo desarrollo dbCreate es por defecto "create-drop" (borrar y crear), pero en algún punto en el desarrollo (y, desde luego, una vez pase a la producción) deberá dejar de borrar y volver a crear la base de datos cada vez que inicie el servidor.

It's tempting to switch to update so you retain existing data and only update the schema when your code changes, but Hibernate's update support is very conservative. It won't make any changes that could result in data loss, and doesn't detect renamed columns or tables, so you'll be left with the old one and will also have the new one.

Grails supports Rails-style migrations via the Database Migration plugin which can be installed by running


grails install-plugin database-migration

The plugin uses Liquibase and and provides access to all of its functionality, and also has support for GORM (for example generating a change set by comparing your domain classes to a database).

Es tentador cambiar a update (actualizar) para mantener los datos existentes y sólo actualizar el esquema cuando el código cambia, pero el soporte de actualización de Hibernate es muy conservador. No realizar los cambios que podrían dar lugar a pérdida de datos y no detecta renombrado de columnas o tablas, por lo que quedará con el viejo y también con el nuevo.

Grails soporta migraciones estilo Rails a través del plugin Database Migration plugin que puede instalarse mediante la ejecución de


grails install-plugin database-migration

El plugin utiliza Liquibase y proporciona acceso a toda su funcionalidad y también cuenta con soporte para GORM (por ejemplo generando un cambio comparando sus clases de dominio con una base de datos).