Joindre des tables à partir de serveurs distincts dans MySQL
Tenter de joindre des tables à partir de deux serveurs distincts, server1 et server2, peut rencontrer des erreurs. Voici l'approche pour surmonter ce défi à l'aide du MOTEUR FEDERATED de MySQL :
Utiliser une table fédérée
Pour combler l'écart entre les serveurs, créez une table fédérée basée sur la table distante. . La structure des deux tables doit rester identique.
Exemple de code :
Créez une table fédérée appelée federated_table basée sur une table distante nommée test_table :
CREATE TABLE federated_table ( id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', PRIMARY KEY (id), INDEX name (name), INDEX other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
En établissant la connexion fédérée, vous pouvez joindre des tables sur plusieurs serveurs comme s'il s'agissait de local :
SELECT a.field1, b.field2 FROM federated_table AS a INNER JOIN [server2, 3312].[db2].table2 AS b ON a.field1 = b.field2;
Remarque : Le compte fed_user doit disposer des autorisations appropriées sur les deux serveurs pour établir la connexion fédérée.
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!