Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mysql4wd 2 bases différentes (Au secours c'est urgent)

13 réponses
Avatar
Roumegou Eric
Bonjour,

J'ai déjà posé la question mais je n'avais pas eu de réponses.
J'ai besoin dans un site où je suis en connexion avec ma base de
données par mysql4wd de faire une petite interface dans une autre base
mysql (ça existe ?, oui je màj non je crée et hop je sors) et je
reviens à ma connxion normale.

Je voudrais eviter d'utiliser l'accès natif.
Donc j'ai créé une nouvelle instance de ma classe mysql, fait un sql
connecte et une fois mon p'tit bazar terminé, fermer cette cnx.

ret est un booléen
HmailSQL est un c_mySQL4WD
ret=HmailSQL:mySQLConnecte("www.monsite.net","wuser","secret","hmailserver")
SI PAS ret ALORS
Info(HmailSQL:mySQLErreur)
FIN
// traitement

/// ....
HmailSQL:mySQLDeconnecte()
PageAffiche(BC_MLENVOIMAIL,"NORMAL")


Le pb c'est que mon serveur mysql principal has gone away lui aussi.

le mySQLdeconnecte deconnecte tout (alors que mon autre objet était
fSQL)

Et vais-je pouvoir utiliser les deux cnx ?

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)

3 réponses

1 2
Avatar
Jacques TREPP
"Roumegou Eric" a écrit dans le message de
news:
Roumegou Eric a écrit :
Jerome PAULIN a écrit :
Roumegou Eric a écrit :
Bonjour,

J'ai déjà posé la question mais je n'avais pas eu de réponses.
J'ai besoin dans un site où je suis en connexion avec ma base de
données par mysql4wd de faire une petite interface dans une autre base
mysql (ça existe ?, oui je màj non je crée et hop je sors) et je
reviens à ma connxion normale.




Si tes deux bases sont sur le même serveur, tu dois pouvoir faire des
requetes croisées, il suffit de préfixer le nom de la table par le nom
du serveur. Exemple :




hmm j'en doute ??????????
vu que la connexion de la base implique specifiquement une base.




Quoique ...
testé sous sqlyog
select * from hmailserver.hm_accounts

me ramène bien mes données alors que je ne me suis connecté que sur une
base.

Je testerai à l'occase.
Merci.





select
*
from
base1.tableA
inner join base2.tableB .....


Si ca peut t'aider ...

gg





--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)





Je te le confirme, Eric. je récupère tous les soirs les tickets de 17
magasins dans des bases mysql (1 par magasin).
j'utilise le préfixage pour gérer un tableau par jour (vertical) et par
magasin (horizontal) avec ce procédé. Il suffit, évidemment que les bases
soient sur le même serveur.
Je gère une base "maitre" qui contient la liste des magasins, et le nom de
leur base.
Il suffit de boucler
use Nombase
et d'effectuer toutes les requètes;

bon week end

--
Jacques TREPP
Albygest
3, rue Jean Mermoz
81160 ST-JUERY
(enlevez 'pasdespam' pour me joindre)
Avatar
Emmanuel LECOESTER
>>> Si tes deux bases sont sur le même serveur, tu dois pouvoir faire des
requetes croisées, il suffit de préfixer le nom de la table par le nom
du serveur. Exemple :




hmm j'en doute ??????????
vu que la connexion de la base implique specifiquement une base.




Quoique ...
testé sous sqlyog
select * from hmailserver.hm_accounts



Même principe que le schéma Oracle Eric :)
Avatar
Rodolphe Jouannet
Le Wed, 17 Oct 2007 18:25:49 +0200, Roumegou Eric a écrit :

Daniel a présenté l'énoncé suivant :
Jacques TREPP a écrit :
"Roumegou Eric" a écrit dans le message de
news:
Fredo MT a écrit :
Salut Eric !

Tu peux avoir 2 connexions en simultané, et requêter d'un côté et de
l'autre. Par contre si tu veux à tout prix fermer l'une ou l'autre
avec le mySQLDeconnecte() tu es obligé de te reconnecter à ta base
principale. Le mySQLDeconnecte() doit fonctionner comme le
SQLDeconnecte() et déconnecte toutes les connexions à tes bases.
Pour jongler entre telle ou telle base, tu dois utiliser
l'équivalent de SQLChangeConnexion avec ta classe mySQL4wd lorsque
les deux bases sont connectées.



merci de ta réponse mais je n'ais pas d'equivalent de
SQLChangeConnexion avec mySQL4wd ???

et si je ne déconnecte pas, cela plante ensuite sur les autres
requetes car je n'ais pas la bonne base.

-- Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)





Bonjour Eric,
je vais sans doute en dire une énorme, mais j'assume :) D'après
Frédéric Emprin, tu peux avoir 2 classes mysql4WD. Il suffit de
dupliquer la classe actuelle sous un autre nom. Lors de la déclaration
des classes, tu instancie Mysql1 est un mysql4WD1, et mysql2 est un
mysql4WD2.
De cette manière tu peux jouer sur les 2 tables.

Mais comme ça fait un moment que le message est passé, je peux me
tromper. Fred, si tu nous entends ... :)

cordialement




Ce qui est important de dupliquer c'est la mysql4wd.dll et bien entendu
son accès d'où la duplication de la classe.

Mais depuis pas mal de temps Rodolphe a modifié la classe et
mysql4wd.dll pour permettre la multi-connexion sur Mysql.

Le nombre de connexion simultannée est de 4.



Ah oui moi je suis encore en 1.5.5.6. Mais j'ai un peu peur de changer
de version d'autant que j'avais fait des modifs dans la classe pour que
cela soit compatible avec tous les autres accès alternatifs.(plus
d'autres certainement ensuite)

et cette classe et dll je l'utilise partout donc méfiance, je vais
rester en 1.5.5.6 pour l'instant.

Sinon je me suis débrouillé en me reconnectant avec l'autre cnx dont
j'avais les params en globales.
Ensuite l'interaction des deux, un fetch sur les tables de ma première
cnx m'avait préparé une cde bulk avec des %1. Ensuite j'ai fait un
chaineconstruit avec mes valeurs de ma 2e cnx et ça marche bien.

Merci à tous pour vos réponses.



Bonjour à tous,

Bon, pour clarifier le tout, des explications s'imposent :

1) pour se connecter à 2 bases différentes, il faut simplement instancier
une autre classe mySQL4WD avec un numéro d'instance différent.
Ex. : myConnexion_1 est un c_mySQL4WD(), myConnexion_2 est un c_mySQL4WD
(1) // le paramètre passé à la classe est le numéro d'instance.

2) Il n'est nullement nécessaire de dupliquer la DLL mySQL4WD.dll (ce
n'est pas SQLLite ;) )

3) Il est nécessaire d'utiliser la version 2.0.0.1 du projet mySQL4WD.

Voilà.

Cdlt.
1 2