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

PHP & Base de données Discussion :

Connexion entre 2 bases sur 2 serveur différents [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut Connexion entre 2 bases sur 2 serveur différents
    Bonjour a tous,

    Est-ce que qqu'un pourrait m'aider à adapter ma requête pour qu'elle fonctionne pour 2 BDD différentes installées sur 2 Serveurs différents également?

    Ici j'arrive à la faire fonctionner pour autant que les 2 BBD soient sur un seul serveur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = "insert into slave.gghf_table SELECT * from master.gghf_table2 WHERE NOT exists (SELECT * FROM slave.gghf_table where gghf_table.newid = gghf_table2.newid) ";
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    Merci pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Je n'ai pas la réponse à ta question; cependant n'as-tu pas pensé à découper ton traitement en plusieurs requêtes ?
    Es-tu bloqué par une contrainte de performance (trop de données) ?

    Dans le cas contraire, je pensais faire ainsi :
    1. Selectionner toutes les lignes sur le master (certes, lourd)
    2. Boucler sur les résultats
    3. Si la ligne n'est pas présente sur le slave, on l'insert


    Cela est bien entendu peu performant, cependant ça devrait fonctionner.
    Je propose cela puisque ton code semble être une requête que l'on exécute très occasionnellement, pour une resynchro ou une migration de donnée.

  3. #3
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Salut,

    Merci pour ta suggestion.

    Par contre j'ai reçu un mail concernant une réponse à ma demande mais la réponse ne s'affiche pas à la suite de ce topic et j'ignore pourquoi.

    Voici tout de même ce qui m'a été répondu et que je remercie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $connexion1 = mysql_connect($host1, $user1, $pass1);
    mysql_select_db('slave', $connexion1);
    $connexion2 = mysql_connect($host2, $user2, $pass2);
    mysql_select_db('master', $connexion2);
     
    $sql1= "SELECT * from master.gghf_table2 WHERE NOT exists (SELECT * FROM slave.gghf_table where gghf_table.newid = gghf_table2.newid)";
    $resultats1 = mysql_query($sql1, $connexion1);
     
    if($resultats1){
    while ($row = mysql_fetch_assoc($resultats1)) {
    $sql2 = "INSERT INTO gghf_table(".implode("," array_key($row)).") VALUES (".implode("," $row).")";
    $resultats2 = mysql_query($sql2, $connexion2);
    }
    }
    Je vais tester cela.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Ok, si le script qui t'as été transmis fonctionne tu devrais alors passer le topic à

  5. #5
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    En testant j'ai une erreur de type:
    Parse error: syntax error, unexpected T_STRING

    A cette ligne 11:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql2 = "INSERT INTO gghf_table(".implode("," array_key($row)).") VALUES (".implode("," $row).")";
    Ca dépasse mes compétences pour corriger.

    Merci pour l'aide ;-)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    J'ai cherché une erreur de syntaxe mais je n'en ai pas trouvé.
    J'ai donc regardé la doc pour les deux fonctions appelées : il s'avère que array_key ne semble pas fonctionner, remplace par array_keys peut-être.

  7. #7
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    Citation Envoyé par legrandse Voir le message
    Salut,

    Merci pour ta suggestion.

    Par contre j'ai reçu un mail concernant une réponse à ma demande mais la réponse ne s'affiche pas à la suite de ce topic et j'ignore pourquoi.

    Voici tout de même ce qui m'a été répondu et que je remercie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $connexion1 = mysql_connect($host1, $user1, $pass1);
    mysql_select_db('slave', $connexion1);
    $connexion2 = mysql_connect($host2, $user2, $pass2);
    mysql_select_db('master', $connexion2);
     
    $sql1= "SELECT * from master.gghf_table2 WHERE NOT exists (SELECT * FROM slave.gghf_table where gghf_table.newid = gghf_table2.newid)";
    $resultats1 = mysql_query($sql1, $connexion1);
     
    if($resultats1){
    while ($row = mysql_fetch_assoc($resultats1)) {
    $sql2 = "INSERT INTO gghf_table(".implode("," array_key($row)).") VALUES (".implode("," $row).")";
    $resultats2 = mysql_query($sql2, $connexion2);
    }
    }
    Je vais tester cela.
    C'est moi qui t'es posté ce code, il devait être 4 ou 5 heure du matin et je me suis aperçu par la suite que dans ta requête tu testé l'existence de la ligne dans ta base avant de l'insérer...ce que je n'avais pas prévu dans mon code. Je ne pensé pas qu'en supprimant le message il te l'enverrait quand même. Pour les "commentaires" on ne peut pas avoir le beurre, l'argent du beurre et la crémière...mais merci quand même !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Solution de transfert de fichier entre 2 applications sur 2 serveurs différents
    Par garthos dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 15/04/2013, 13h56
  2. [WD15] 2 bases sur 2 serveurs différents. Comment faire un ALIAS
    Par EriCstoFF dans le forum WinDev
    Réponses: 7
    Dernier message: 29/12/2010, 14h32
  3. Réponses: 2
    Dernier message: 18/02/2009, 14h16
  4. Réponses: 1
    Dernier message: 15/05/2008, 18h45
  5. [SQL-Server] Connexion entre SQL Server et IIS sur 2 serveurs différents
    Par kenzo080 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/09/2006, 11h50

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