Symfony Proyecto Propel: Cómo actualizar el esquema de base de datos sin reinicios?
Pregunta
He desplegado mi proyecto Symfony con el servidor y ahora quiero cambiar los modelos dentro schema.yml
sin reseteo otras tablas de bases de datos sin relación y mantener los datos actuales.
¿Hay alguna característica de diferencias / actualización para el proyecto symfony propel?
Solución
Tome un vistazo a sfPropelSqlDiffPlugin (disponible en el repositorio de plugins). He estado usando durante bastante tiempo y ha funcionado bien para mí. No es perfecto (no trata demasiado bien con cosas no estándar, como la especificación de un sqltype en su esquema, por ejemplo), pero se ha hecho la vida mucho más fácil para mí.
En lugar de confiar en el plugin para hacer la ejecución real de SQL diffed, prefiero hacer:
./ symfony propel: build-sql-diff
Esto crea un archivo SQL en el directorio de datos, que luego se puede inspeccionar / editar manualmente antes de ejecutar la secuencia de comandos.
Otros consejos
Puede generar el SQL mediante el uso de la 'propel: build-sql' comando. El resultado es un archivo SQL válida que se puede importar a ti mismo. En nuestro proyecto muy grande que acabamos de hacer un seguimiento de la misma SQL. Construimos los modelos y generar el SQL. A continuación copiamos el nuevo SQL generado en un archivo que contiene el código SQL para nuestra versión. Cuidar el SQL donde las mesas se cambian en lugar de crear, ya que se debe modificar manualmente la mesa por sí mismo.
No se puede hacer desde Symfony que yo sepa.