Différences / comparaison de deux bases

Eléphanteau du PHP | 13 Messages

27 févr. 2008, 19:21

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

Mammouth du PHP | 19672 Messages

27 févr. 2008, 19:41

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

28 févr. 2008, 12:57

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.

Mammouth du PHP | 19672 Messages

28 févr. 2008, 13:06

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 13 Messages

28 févr. 2008, 13:14

OUi, hélas je ne vois pas de moyen pour logger uniquement les changements de structure de la BDD ...

Mammouth du PHP | 19672 Messages

28 févr. 2008, 14:28

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: