Tecnicas, trucos y curiosidades de desarrollo de software

Doctrine migrations para actualizar la base de datos desde el fichero schema.yml

Daniel González Cerviño, 18 octubre 2011

En este artículo vamos a hablar de doctrine migrations, una utilidad de doctrine 1.2 que permite fácilmente actualizar tus bases de datos según las necesidades del proyecto.

El primer paso es generar la estructura de carpetas y base de datos necesaria para gestionar las migraciones

php symfony doctrine:generate-migration --env=prod proyect_name

Veremos que ha creado una tabla en la base de datos, donde almacena la versión de la migración y una carpeta en lib/migration/doctrine

Esta instrucción solo es necesario ejecutarlo la primera vez. Después continuaremos a partir de aqui.

El siguiente paso, es generar las versiones para la migración para ello ejecutamos el siguiente comando.

php symfony doctrine:generate-migrations-diff --env=prod

Lo que hace doctrine es comparar la información que contiene el fichero config/doctrine/schema.yml y la información que se encuentra en los modelos lib/model/doctrine/base

Puedes comprobar cuales son las diferencias que ha detectado en los ficheros generados lib/migration/doctrine, es muy conveniente revisar cuales son los cambios que piensa aplicar en cada uno de los pasos de la migración.

Una vez que estás seguro de que todo está correcto, tan solo indicarle a doctrine que complete el proceso.

php symfony doctrine:migrate --env=prod

Muy problablemente tengas que ejecutar un build all classes para continuar trabajando, ya que ahora tienes diferencias entre lo que existe en el modelo, y lo que contiene la base de datos

php symfony doctrine:build --all-classes

Algunas de las ventajas de utilizar migraciones son las siguentes:

  • Mantener en el sistema de control de versiones un registro de los cambios realizados en el modelo de datos.
  • Capacidad de volver a versiones previas del modelo de datos.

En mi experiencia personal doctrine migration es muy util a la hora de generar pequeños cambios en la base de datos, añadir y quitar campos, claves foreaneas, pero no es la panacea, si el proceso no se completa a veces deja el sistema inestable, por ejemplo cuando falla en la creación de una clave foranea dejando el sistema a medias entre dos versiones. Por lo tanto, te recomiendo probar primero la migración que estás a punto de hacer en una base de datos de desarrollo o test

php symfony doctrine:generate-migration --env=prod proyect_name

Entradas relacionadas:

  1. Sobre escribiendo los métodos getter y setter en doctrine Cuando tratamos de sobreescribir un metodo getter de doctrine, y...
  2. Desabiltar la barra de depuración de symfony 1.4 para un módulo o vista específica. La configuración en cascada de symfony permite que configuremos nuestra...

!Sigue las respuestas a esta entrada¡

No hay comentarios a Doctrine migrations para actualizar la base de datos desde el fichero schema.yml.

Deja tu comentario.