web-dev-qa-db-fra.com

Mettre la base de données MySQL sous contrôle de version?

J'utilise actuellement SVN pour mes projets PHP. Je pensais que je devrais aussi placer ma base de données sous contrôle de version, mais quel est le meilleur moyen de le faire? Dois-je créer un dossier de base de données dans mon projet en SVN, coller les modifications SQL dans un fichier appelé from_1.0_to_2.0.sql et valider?

43
user479911

Chaque fois que vous apportez des modifications à votre base de données, vous devez enregistrer ces modifications dans une migration. Vous pourrez ensuite les exécuter ultérieurement sur d'autres serveurs en même temps que vous mettrez à jour votre code. Mais vous avez fondamentalement la bonne idée. Vous pouvez écrire des outils pour le rendre plus automatisé. Par exemple, version de chaque fichier, puis créez une table comme migration_version dans votre base de données, qui contiendra la version actuelle de la base de données. Vous pouvez ensuite créer un script de migration qui exécutera toutes les migrations nécessaires à la mise à jour de la base de données.

Notez que si vous souhaitez une gestion bidirectionnelle de la base de données (afin de pouvoir également revenir à la version précédente de la base de données), vous devez écrire les requêtes requises pour cela également pour chaque version.

Certains outils peuvent également vous aider à écrire les migrations, tels que MySQLdiff

19
reko_t

Notez que récemment (décembre 2012), vous avez une autre option: DBV (DataBase Version)

Il est basé sur le projet Github , et est une application Web de contrôle de version de base de données proposant une gestion des schémas, des scripts de révision, etc.

database schema

31
VonC

Check-out 

Liquibase

http://www.liquibase.org/quickstart

L'idée est la suivante:

Toutes les modifications de la base de données sont stockées sous une forme lisible mais traçable, puis archivées dans le contrôle de source. - Liquibase.org page de garde

Il s’agit d’un logiciel fantastique qui vous permet de modifier votre base de données selon le même processus que la réponse la mieux notée, sauf que cette roue a déjà été écrite et est prête à être utilisée. Je l'utilise au travail, c'est une solution fantastique. Mettez-le en œuvre vous-même si vous souhaitez savoir comment cela fonctionne, mais Liquibase fonctionne parfaitement si vous souhaitez disposer d'un outil pour accomplir vos tâches.

13
Brandon

Vous pouvez utiliser l'outil MySQL Workbench .

Le fichier généré à l'aide de l'outil de modélisation peut généralement être enregistré sous SVN . Cet outil vous permet de synchroniser votre base de données avec le modèle de manière bidirectionnelle.

1
fluminis

kdbv peut être utile met à jour votre base de données mysql vers la dernière version la plus récente, sans suivre les modifications dans les tables mysql

0
Ganesh Kandu

Le cadre des migrations dans Laravel - PHP semble vraiment utile, mais il existe un gros MAIS. Il n’existe qu’un outil en ligne pour concevoir un schéma en langage Laravel ORM appelé "Eloquent" ( ici ). Il est donc toujours inutilisable si vous devez concevoir et gérer une base de données de projets sérieux.

0
Srneczek