Durante i periodi di intenso sviluppo, lo schema del database cambia sia rapidamente che continuamente, e quando la spinta settimanale verso la build beta arriva, lo schema è cambiato così tanto che l'unica opzione sensata è di bombardare tutte le tabelle Posso e copiare le nuove versioni dal mio database di sviluppo. Ovviamente, non funzionerà una volta avviato, dato che i dati di produzione nuking sono una ricetta per il disastro, quindi mi chiedevo quali strategie erano disponibili per gestire le modifiche dello schema del database da una versione / revisione a un'altra?
Alcuni che ho trovato o sperimentato:
- Straight nuke-and-dump da un database all'altro (cosa sto facendo ora)
- Mantenimento di un file UPDATE.sql con istruzioni SQL che vengono eseguite tramite script o manualmente.
- Mantenere un update.php file con un valore "db-schema-versione" corrispondente nel database attivo
La terza opzione sembra essere la più sensata, ma esiste ancora la possibilità che una query SQL mal costruita fallisca il mid-script, lasciando il database in uno stato semi-aggiornato, rendendo necessario il ripristino di un backup.
Sembra un non-problema, ma succede, dato che noi, come team, usiamo phpMyAdmin, e non riesco nemmeno a fare affidamento su me stesso, ricordo di copiare l'istruzione SQL eseguita per incollarla nell'aggiornamento.php file. Una volta che navighi su un'altra pagina, devo riscrivere manualmente la dichiarazione SQL, o invertire la mia modifica e farlo di nuovo.
Immagino che ciò che spero sia una soluzione che non influenzi il nostro consolidato flusso di lavoro di sviluppo?