Pendant les périodes de développement intense, le schéma de la base de données change à la fois rapidement et en continu, et au moment où notre poussée hebdomadaire vers la version bêta arrive, le schéma a tellement changé que la seule option raisonnable est de neutraliser toutes les tables que je peux et copiez les nouvelles versions de ma base de données de développement. De toute évidence, cela ne fonctionnera pas une fois que nous aurons lancé, car les données de production sont une recette pour un désastre, alors je me demandais quelles stratégies existaient pour gérer les changements de schéma de base de données d'une version / révision à une autre?
J'en ai trouvé ou expérimenté:
- Nuke-and-dump direct d'une base de données à une autre (ce que je fais maintenant)
- Gérer un fichier UPDATE.sql avec des instructions SQL exécutées via un script ou à la main.
- Gestion d'un fichier update.php avec une valeur "db-schema-version" correspondante dans la base de données active
La troisième option semble être la plus judicieuse, mais il existe toujours la possibilité qu'une requête SQL mal construite échoue en cours de script, laissant la base de données dans un état semi-mis à jour, nécessitant une restauration d'une sauvegarde.
Cela ne semble pas être un problème, mais cela se produit, car en tant qu'équipe, nous utilisons phpMyAdmin, et je n'arrive même pas à me fier à moi-même, souvenez-vous d'avoir copié l'instruction SQL exécutée pour la coller dans le fichier update.php. Une fois que vous accédez à une autre page, je dois réécrire l'instruction SQL à la main, ou inverser ma modification et recommencer.
Je suppose que ce que j'espère, c'est une solution qui n'affecte pas notre flux de travail de développement établi?
update.php
ouupdate.sql
dans un environnement de test avant de l'appliquer à la base de données active, non? Et PHPMyAdmin est blâmé pour les problèmes possibles qui pourraient survenir dans un script, peut-être qu'il est temps de chercher un outil différent / meilleur?