Maison  >  Article  >  base de données  >  Comment implémenter une requête conjointe entre bases de données distantes MySQL

Comment implémenter une requête conjointe entre bases de données distantes MySQL

PHPz
PHPzavant
2023-06-02 22:32:522041parcourir

Situation 1 : Deux bibliothèques sont sur le même hôte physique

Comment implémenter une requête conjointe entre bases de données distantes MySQL

requête conjointe (deux bibliothèques différentes, la bibliothèque myemployees et la bibliothèque shoppingCart). Ces deux bibliothèques sont sur le même hôte physique, toutes deux sur ma machine locale.

Comment implémenter une requête conjointe entre bases de données distantes MySQL

#联合查询(不同的2个库,myemployees库和shoppingCart库)
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;
#
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION ALL
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;

Scénario 2 : Les deux bibliothèques ne sont pas sur le même hôte physique (c'est-à-dire que les deux bibliothèques sont sur des hôtes physiques différents)

Afin de démontrer l'effet, j'utilise ma machine virtuelle ici, et le Le système Linux est installé sur ma machine virtuelle (centos), la base de données MySql a été installée sur le système Linux, le service de base de données MySql a été démarré et tous les environnements ont été complétés.

L'IP de mon système Linux (centos) est 192.168.117.66. Je prévois d'effectuer une requête conjointe entre ma table d'auteur local et la table d'utilisateur distant.

Après avoir tapé SHOW CREATE TABLE `user` sous Linux et obtenu le résultat, nous avons copié Comment implémenter une requête conjointe entre bases de données distantes MySQL

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)

ce code dans ma base de données locale, et

ajouté Comment implémenter une requête conjointe entre bases de données distantes MySQL

ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';这句话。

Comment implémenter une requête conjointe entre bases de données distantes MySQL

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';
à la fin

Comment implémenter une requête conjointe entre bases de données distantes MySQLEn fait, ce qui précède La déclaration, pour le dire franchement, consiste à créer un raccourci de connexion à une base de données distante (raccourci de connexion à une base de données distante) dans ma base de données locale. À quoi est-il similaire ? C'est similaire au raccourci sur le bureau de notre système d'exploitation de fenêtre. Nous pouvons ouvrir une icône de logiciel en double-cliquant sur le bureau. C'est le même principe.

Comment implémenter une requête conjointe entre bases de données distantes MySQLExécutez simplement l'instruction ci-dessus.

Au fait, il y a encore une chose à noter :

Vous devez vérifier si le moteur FÉDÉRÉ

de votre base de données MySQL locale est activé.

SHOW ENGINES;
Comment implémenter une requête conjointe entre bases de données distantes MySQLSi FEDERATED est NON, cela signifie qu'il n'est pas activé et que vous devez modifier le fichier de configuration de la base de données mysql.

Modifiez le fichier de configuration de la base de données mysql locale et ajoutez

federated à la fin du fichier de configuration, comme indiqué ci-dessous :

Si vous êtes sur un système Windows, modifiez le fichier

my.ini, si vous utilisez Linux pour le système, modifiez le fichier my.cnf

.

N'oubliez pas de redémarrer le service mysql après avoir modifié le fichier de configuration.

Comment implémenter une requête conjointe entre bases de données distantes MySQL

Linux redémarre le service mysql, service mysqld restart

.

Redémarrez le service mysql dans Windows. Dans la fenêtre dos, entrez le nom du service mysql net stop, puis entrez le nom du service mysql net start

. OK, une fois que tout est fait, exécutez l'instruction SQL suivante pour voir les résultats de la requête inter-bases de données.

#
SELECT id, aname FROM author
UNION
SELECT id, `name` FROM `user`;

Comment implémenter une requête conjointe entre bases de données distantes MySQL

SELECT * FROM author INNER JOIN  `user`;

Pour la requête inter-serveurs et inter-bases de données ci-dessus, vous devez faire attention aux points suivants :

1 Cette méthode de requête inter-bases de données ne prend pas en charge les transactions, donc. il est préférable de ne pas utiliser de transactions.

2. La structure du tableau ne peut pas être modifiée. 3.MySQL utilise cette méthode de requête inter-bases de données. La base de données distante ne prend actuellement en charge que MySQL et les autres bases de données ne le prennent pas en charge.

4. La structure de la table doit être totalement cohérente avec la table de la base de données cible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer