Signaler

Mysql_select 2 BDD [Résolu]

Posez votre question malhek69 63Messages postés mardi 6 décembre 2011Date d'inscription 1 décembre 2016 Dernière intervention - Dernière réponse le 1 déc. 2016 à 17:11
Bonjour,

j'ai deux BDD mysql qui ne sont pas sur le même serveur, je souhaite récupérer les données d'une première BDD pour l'insérer dans le deuxième.
Voici mon code en premier:

<?php

// Create first connection to the host named locahost1.
$con1 = @mysql_connect('XX.XXX.XXX.XXX' , 'admin' , 'password');
if(!$con1) {
        echo "ERROR MySQL: Connect to Server locahost 1\n";
        exit;
}
// Create a second connection to the host named locahost2.
$con2 = @mysql_connect('localhost' , 'admin' , 'password', true);
if(!$con2) {
        echo "ERROR MySQL: Connect to Server locahost 2\n";
        exit;
}

echo $con1."\n";
echo $con2."\n";
// Connect to the selected MySQL database – using the connection $con1.
@mysql_select_db(‘asteriskcdrdb′, $con1);
// Connect to the selected MySQL database – using the connection $con2.
@mysql_select_db(‘facturation′, $con2);

// requête sql pour vider la table cdrimport
$sql = "TRUNCATE TABLE facturation.importcdr";
$req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo nl2br("Truncate importcdr OK");

// requête sql copie des données vers la base facturation
$sql = "INSERT INTO facturation.importcdr (calldate,clid,src,dst,duration,billsec)". 
" (SELECT calldate,clid,src,dst,duration,billsec FROM asteriskcdrdb.cdr WHERE cdr.calldate LIKE '$lastmonth')";
$req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo nl2br("copie données vers base factu OK");


Et voici l'erreur que j'ai :

Erreur SQL !<br>INSERT INTO facturation.importcdr (calldate,clid,src,dst,duration,billsec) (SELECT calldate,clid,src,dst,duration,billsec FROM asteriskcdrdb.cdr WHERE cdr.calldate LIKE '2016-04')<br>Table 'asteriskcdrdb.cdr' doesn't exist


Je force la connexion avec mon true donc je ne comprends pas où est l'erreur. Qqn a une idée par hasard?




EDIT : Ajout du LANGAGE dans les balises de code.
Afficher la suite 
Utile
+0
moins plus
Bonjour,

Tu utilises l'ancienne extension mysql ....
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Je t'invite à passer à PDO ou à mysqli !

Commence par changer ça.

malhek69 63Messages postés mardi 6 décembre 2011Date d'inscription 1 décembre 2016 Dernière intervention - 10 mai 2016 à 10:50
Alors ça malheureusement c'est bien la remarque que j'ai faite mais on me demande quand même de le faire avec :/
Répondre
Ajouter un commentaire
Utile
+0
moins plus
SAlut,

Le message d'erreur est explicite : la table asteriskcdrdb.cdr n'existe pas.

Si la connexion n'est pas définie pour la fonction mysql_query (le deuxième paramètre), celle-ci prend la dernière connexion mysql ouverte, soit $con2 dans ton cas. Or cette table est accessible via $con1. Donc :
mysql_query($sql, $con1);


Bonne journée,
malhek69 63Messages postés mardi 6 décembre 2011Date d'inscription 1 décembre 2016 Dernière intervention - 11 mai 2016 à 14:51
oui mais dans ce cas c'est l'autre BDD qui ne sera pas accessible, elles ne sont pas sur même serveur et je souhaite copier les données d'une base à une autre
Répondre
Pitet 2059Messages postés lundi 11 février 2013Date d'inscription 7 décembre 2016 Dernière intervention - 11 mai 2016 à 16:45
Ok je n'avais pas compris que ta requête accèdes aux deux serveurs, hélas cela ne semble pas possible.
La solution idéale pour accéder à plusieurs serveurs mysql via une requête semble être le Federated Storage Engine :
http://dev.mysql.com/doc/refman/5.6/en/federated-description.html
https://dev.mysql.com/doc/refman/5.0/en/federated-use.html
Je ne connais pas cette solution donc je ne pourrais t'en dire plus.

Une autre solution p-e plus simple serait de faire un export de la table du premier serveur vers le second serveur afin de se passer du problème de connexion à deux serveurs.
Répondre
malhek69 63Messages postés mardi 6 décembre 2011Date d'inscription 1 décembre 2016 Dernière intervention - 1 déc. 2016 à 17:11
ça fait longtemps mais au final c'est un peu ce que j'ai fait
je me co au premier serveur, je récupère les infos et les insère dans l'autre bdd et hop je me co à l'autre BDD. Bref du coup ça marche
Merci ;)
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !