Page 1 sur 1

Différences / comparaison de deux bases

Posté : 27 févr. 2008, 19:21
par praline
Bonjour,

Je cherche un outil, idéalement en ligne de commande, permettant de détecter les différences entre une BDD source et une BDD destination, et de générer un fichier SQL de mise à jour.

J'ai trouvé pour le moment deux outils : MySQLdiff (PHP) et compareSql

Je cherche bien sur un outil gratuit :D

Posté : 27 févr. 2008, 19:41
par Cyrano
Si la seconde base doit être mise à jour périodiquement à partir de la première, pourquoi ne pas envisager de mettre plutôt en place une réplication ? Tout changement sur la première se répercutera immédiatement sur la seconde. J'ai même déjà monté une circulaire entre ma tour et mon portable de façon à avoir des mises à jour aussi bien dans un sens que dans l'autre. Et si la connexion est interrompue, pas de problème, la mise à jour se fera quand même lors de la reconnexion. Pas de scripts, pas de ligne de commande, rien dans les mains, rien dans les poches, et ça fonctionne :-k

Posté : 28 févr. 2008, 12:57
par praline
Merci mais ce n'est pas ce que je cherche.

En gros quand je crée une nouvelle version de mon projet, je veux disposer d'un fichier SQL contenant les requêtes à exécuter pour mettre à jour la BDD.
Ainsi, pour passer de la version 1.0.0 à la version 1.0.1, il suffit de lancer le fichier SQL en question.

Dans mon idée, je ferais un dump de la structure de la base a la version 1.0.0, et lorsque ma version 1.0.1 est prête, je refait un dump de la base, et un outil (celui que je cherche) me génèrerait le fichier SQL de migration entre la BDD 1.0.0 et la BDD 1.0.1 à partir de ces deux dump.

Posté : 28 févr. 2008, 13:06
par Cyrano
Est-ce que la structure même de la base doit évoluer ? Dans ce cas, il faudrait logguer les requêtes de modification; Dans ce cas, au départ d'une version 1.0.0, tu crées un dump.
À un moment donné, tu crées une 1.0.1, dans ce cas, il te faut le dump de la 1.0.0, et le log de toutes les requêtes de modification exécutées depuis, et bien entendu après mise à jour créer un nouveau dump en vue de la prochaine version. Et encore, sur un plan plus global, je distinguerais les dumps en deux catégories : le structure d'un coté et les données de l'autre, ce serait plus simple.

Enfin bon, là, mon idée est surtout orientée vers un développement, ce qui ne correspond pas à ta demande initiale et là, je ne connais pas d'outils pour ça :-k

Posté : 28 févr. 2008, 13:14
par praline
OUi, hélas je ne vois pas de moyen pour logger uniquement les changements de structure de la BDD ...

Posté : 28 févr. 2008, 14:28
par Cyrano
En général, lorsque tu modifies une table, tu vas utiliser "ALTER TABLE" : une bête expression régulière peut parfaitement détecter ça et donc permettre le déclenchement d'un enregistrement de ladite requête, tu ne crois pas ?