Aller au contenu

2 bases, 2 connexions ?


francoisch

Sujets conseillés

Bonjour

Jusquici les tables MySql de mon site étaient hébergées dans une seule base.

Je viens de créer une deuxième base et dy mettre quelques tables.

Je tombe sur le problème suivant :

Jétablis une connexion sur la base 1 avec mon module connexion.php

Je men sers pour lire / écrire

Jétablis une connexion sur la base 2 avec le même module connexion.php

Jessaie décrire mais lécriture est tenté par MySql sur la base 1

Je crois comprendre de cette expérience quune connexion ne peut être utilisée quavec une seule base.

Si cest bien vrai, que puis je faire ?

Existe-t-il un moyen pour rompre une connexion, quitte à en établir une nouvelle à chaque fois ?

Ou bien dois je plutôt établir autant de connexions que de bases ?

Par avance merci de votre aide.

Francois

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Pour te le dire, le mieux serait de nous donner tes sources.

Pour clore ta connexion : mysql_close() mais ça ne répondra pas à ta question puisque tu utilises un niveau d'abstraction différent (ce qui est le mieux, sans aucun doute).

Tes bases 1&2 sont sur la même machine ? Il me vient comme un doute sur ta question :

mysql_select_db("base_en_question")

Lien vers le commentaire
Partager sur d’autres sites

Ils sont donc sur 2 machines différentes, il te faudra donc 2 connexions ! Il est inutile de fermer la première à priori, à moins que la méthode que tu utilises pour te connecter t'y force.

Lien vers le commentaire
Partager sur d’autres sites

En fait, tu peux très bien te connecter (via mysql_connect) à un serveur de base de données sans pour autant sélectionner (via mysql_select_db) une base de données.

Si l'utilisateur que tu connectes à les droits sur les deux bases à utiliser, tu peux utiliser tes deux base de données dans une même requête (ou pas) en préfixant tes tables avec le nom de la base de données contenant ces tables.

Exemple :


SELECT * FROM <mabase1>.<matable1>;
SELECT * FROM <mabase2>.<matable2>;
SELECT * FROM <mabase1>.<matable1> A, <mabase2>.<matable2> B WHERE A.<champ4> = B.<champ8> AND A.<champ3> = <condition1>;

Dans ton cas, dans la mesure ou tu as deux serveurs de base de données distincts, tu es obligé de te connecter 1 fois sur chacun de tes serveurs (et tu ne pourras donc pas utiliser des requêtes avec des jointures sur les deux serveurs).

Lien vers le commentaire
Partager sur d’autres sites

Merci de vos réponses, j'ai appris quelquechose de nouveau aujourd'hui.

Je vais donc faire deux connexions puisque mes bases sont sur deux serveurs différents.

Je garde le préfixage pour un autre cas si j'avais d'autres bases sur le même serveur.

Merci encore de votre aide.

Frncois

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...