IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Comparer deux bases MySQL et ajouter juste les différences


Sujet :

MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comparer deux bases MySQL et ajouter juste les différences
    Bonjour à tous,

    Dans notre société, on utilise une plateforme qui s'appelle Moodle pour développer des applications d'apprentissage aux établissements scolaires, c'est une plateforme qui est développée en PHP et MySQL et qui est basée sur des plugins.

    On installe l'application sur les serveurs de nos clients et quand on mets à jour notre base, on voudrait que nos clients reçoivent une authentification afin d'installer la nouvelle mise à jour sur leur serveur.

    Je vous explique rapidement le fonctionnement de cette plateforme avant de vous poser ma question, quand les enseignants ajoutent des ressources dans la plateforme (cours, QCM, articles, audio, vidéo,...), il y a des lignes qui apparaissent dans quelques tables de la base. De notre côté, quand on ajoute un nouveau plugin dans l'application, on a plusieurs nouvelles tables qui se crée ainsi que des données qui s'ajoutent aux différentes tables existantes, mon but est donc de développer un script qui compare les deux bases (notre base et celle du client), extrait les différences, et ajoute juste les nouvelles tables et données ajoutée par le plugin, dans la base du client. Je voudrais donc savoir si vous avez déjà une idée de ce qu'il faut faire pour extraire juste les nouvelles données ajoutée à notre base après l'installation des plugins et mettre à jour la base du client avec ces données sans écraser ses données déjà installées dans sa base.

    J'espère avoir été suffisamment clair dans mes explication et vous remercie d'avance de votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,

    http://www.mysqldiff.org/ , peut être que ça peut t'aider.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je te remercie pour ton retour, en fait j'ai déjà utilisé la commande diff de mysql dans un script qui permet de comparer les bases et de générer un fichier sql contenant toutes les différences entre les bases, mais cela ne répond malheureusement pas à mon besoin car les différences se génèrent d'une manière bidirectionnelle entre les bases. Je te donne un simple exemple :

    Avant d'installer l'application chez le client, on suppose qu'on a une base B1 contenant une seule table T1 qui contient 10 enregistrements. Cela sera tout ce qu'on va livrer par exemple au client. Au moment où le client commence à travailler sur l'application (ajout des ressources[vidéo, audio, cours, ...]) il y a d'autres lignes qui s'ajoutent automatiquement à la table T1, jusque là c'est clair. On suppose qu'après utilisation de l'application le nombre d'enregistrements dans la table T1 du client est devenu 20 au lieu de 10, chez nous c'est seulement 10.

    Quand on ajoute un plugin à la plateforme il faut que le client reçoit une notification pour installer la mise à jour, le plugin qu'on ajoute crée une nouvelle table T2 par exemple avec 50 enregistrements et ajoute 5 nouvelles lignes dans la table T1 (C'est toujours chez NOUS), donc le nombre de lignes dans la table T1 devient 15

    Résumé : On va se retrouver à la fin avec un base qui contient deux tables (T1 avec 15 enregistrements et T2 avec 50 enregistrements).
    La base du client contiendra une seule table (T1 avec 20 enregistrements).

    Je voudrais que lorsque le client lance la mise à jour, le script insère juste les 5 nouvelles lignes dans la table T1 du client et n'écrase pas celles qui ont été déjà ajoutées + la table T2 nouvellement ajoutée par le plugin.

    Avec le mysqldiff la base du client sera similaire à la notre et par conséquent les données ajoutées par le client seront totalement perdues.

    Merci d'avance pour votre aide.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut GoldenAbdel.

    Citation Envoyé par GoldenAbdel
    Je voudrais que lorsque le client lance la mise à jour, le script insère juste les 5 nouvelles lignes dans la table T1 du client et n'écrase pas celles qui ont été déjà ajoutées + la table T2 nouvellement ajoutée par le plugin.
    Je ne voie pas trop de difficultés pour réaliser votre script en fonction de ce que vous demandez.

    Pour la mise à jour de votre table, il nous faut son descriptif.
    En particulier, la clef primaire, voire aussi les index.
    Un simple "insert" pour être la solution.

    Pour la création d'une nouvelle table, le script sera de même nature que l'export d'une table dans phpmyadmin.

    Comment savez-vous ce que vous devez transférer vers votre client ?
    Et si le client possède déjà le plgin que vous désirez installé, que va-t-il se passer ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/02/2013, 10h01
  2. Comparer deux bases de donnees MYSQL
    Par yaz1234 dans le forum Administration
    Réponses: 0
    Dernier message: 18/07/2008, 16h49
  3. Comparer deux enregistrements mysql lors d'un update ?
    Par zevince dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 03/02/2006, 16h56
  4. Transfert de tables entre deux bases MySQL
    Par baaron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/01/2006, 23h24
  5. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo