Im build una aplicación y me gustaría saber cuál es la mejor manera de actualizar la database de producción.
En este momento despliego mi código (Aplicación CakePHP a través de un repository GIT)
al igual que este tutorial https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
Pero, ¿cuál es la forma adecuada de actualizar la estructura de la database? no datos
Digamos que creo una nueva tabla o modifico algunos campos en otra tabla en debugging, ahora exporto la consulta y luego ssh al server y me conecto a MySql e inserto la consulta en la database.
pero estoy seguro de que debe haber otra manera no tan complicada.
Lo que me gusta hacer es escribir un set de funciones para convertir mis datos en los nuevos campos / tablas, y así sucesivamente.
Por ejemplo, recientemente tuve que hacer un cambio en mi database donde almaceno las dates de transacción porque el formatting en el que almacené las dates no se evalúa correctamente durante una consulta.
El resultado de tener todo preparado de antemano y las testings garantizaron solo 3-5 minutos de time de inactividad para la implementación.
Las migraciones de la database es eso lo que necesitas. Si está usando CakePHP v2.x, lea esto:
http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html
Si CakePHP 3.x esto:
http://book.cakephp.org/3.0/en/migrations.html
En su gancho post-receive
, debe configurar un disparador para ejecutar migraciones en su server de producción
¿Por qué no usarías migraciones ya que está integrado en Cake? Eso le permitiría crearlos localmente y luego, cuando el código se envíe a través de git, ejecute la migration en producción.