SF2: Doctrine Schema Update

Normalmente cuando trabajas haciendo mejoras o cambios estructurales sobre un proyecto ya existente llega un momento del ciclo en el que toca adaptar dichos cambios a la base de datos. Lo que normalmente se llama "importar" los datos de producción.
Ahí es cuando te inventas el típico scriptillo que conecta con las dos bases de datos y hace el dirty-job cogiendo los datos de una y adaptándolos a la otra. Pereza es decir poco para los vagos como yo. Sin embargo, trabajando con Symfony2 y aliándose con la suerte de no haber hecho demasiados cambios mayores, existe otra forma de hacerlo un pelín más divertida.
Se trata del comando doctrine:schema:update. Tal y como se comenta en la documentación oficial, se trata de un comando muy potente puesto que se encarga de comparar cómo tendría que ser la base de datos según las entidades y cómo realmente es. Una vez hecha la comparación genera todas las sentencias SQL necesarias para convertir la base de datos y dejarla impoluta.
Lo mejor es hacer una prueba y ver si realmente funciona, así que vamos a hacer lo siguiente... teniendo en cuenta un escenario con dos entornos (producción y desarrollo) con sus bases de datos distintas (la de producción con datos reales y la de desarrollo con múltiples cambios y datos de prueba loremipsuneados), el protocolo que he seguido viene a ser el siguiente:
- Creamos un backup de la base de datos de desarrollo, porque ya se sabe que las meigas existen.
- Exportamos la base de datos de producción y la ponemos en desarrollo.
- Una vez tenemos nuestro entorno de desarrollo apuntando a la copia de la base de datos de producción ejecutamos el comando "php app/console doctrine:schema:update --dump-sql".
- Guardamos las sentencias SQL generadas en un archivo .sql (por si las moscas).
- Y ahora tenemos dos opciones, ejecutar en un cliente de MySQL las sentencias del archivo linea a linea para ir tomando control de lo que vamos haciendo, o ejecutar un "php app/console doctrine:schema:update --force".
Es evidente que dependiendo de los cambios estructurales que hayamos hecho, es posible que tengamos que ajustar algunos valores de producción (foreing keys rotas y demás) a la nueva estructura, pero en teoría y siendo conocedores de lo que hemos hecho, no debería ser demasiado complicado y podría ser material para otra entrada.
$ php app/console doctrine:schema:update --dump-sql > cambios.sql
$ php app/console doctrine:schema:update --force