Durante los tiempos de gran desarrollo, el esquema de la base de datos cambia tanto rápida como continuamente, y para cuando llega nuestro impulso semanal a la compilación beta, el esquema ha cambiado tanto que la única opción sensata es destruir todas las tablas que pueda y copiar las nuevas versiones de mi base de datos de desarrollo. Obviamente, esto no va a funcionar una vez que lo lancemos, ya que los datos de producción nucleares son una receta para el desastre, por lo que me preguntaba qué estrategias existían para administrar los cambios del esquema de la base de datos de una versión / revisión a otra.
Algunos que he encontrado o experimentado:
- Nuke-and-dump directo de una base de datos a otra (lo que estoy haciendo ahora)
- Mantener un archivo UPDATE.sql con sentencias SQL que se ejecutan a través de script o de forma manual.
- Mantener un archivo update.php con el correspondiente valor "db-schema-version" en la base de datos activa
La tercera opción parece ser la más sensata, pero aún existe la posibilidad de que una consulta SQL mal construida falle a mitad de secuencia de comandos, dejando la base de datos en un estado medio actualizado, lo que requiere la restauración de una copia de seguridad.
Parece que no es un problema, pero sucede, ya que como equipo, usamos phpMyAdmin, y parece que ni siquiera puedo confiar en mí mismo, recuerdo haber copiado la instrucción SQL ejecutada para pegarla en el archivo update.php. Una vez que navega a otra página, tengo que volver a escribir la declaración SQL a mano, o revertir mi cambio y volver a hacerlo.
Supongo que lo que espero es una solución que no afecte nuestro flujo de trabajo de desarrollo establecido.
update.php
oupdate.sql
archivo en un entorno de prueba antes de aplicarlo a la base de datos activa, ¿verdad? Y se culpa a PHPMyAdmin por los posibles problemas que podrían ocurrir en un script, ¿tal vez es hora de buscar una herramienta diferente / mejor?