Maison  >  Article  >  base de données  >  Explication détaillée de la méthode de requête liée aux bases de données croisées dans MySQL

Explication détaillée de la méthode de requête liée aux bases de données croisées dans MySQL

黄舟
黄舟original
2017-05-28 09:40:581817parcourir

Cet article présente principalement la méthode query d'association entre bases de données dans mysql Les amis qui en ont besoin peuvent se référer au

Scénario métier : Association entre différentes bases de données. Requête de table

Par exemple, les tables à associer sont : Table A dans la base de données A sur la machine A && Table B dans la base de données B sur la machine B.

Dans ce cas, il est impossible d'exécuter "select A.id,B.id from A left join B on ~~~;", mais les exigences métier sont immuables, le la conception de la base de données est immuable, ce qui est pénible. .

Solution : Créez une table B dans la base de données A sur la machine A. . .

Bien sûr, je ne plaisante pas. Nous utilisons une méthode de création de tables basée sur le moteur fédéré de MySQL.

Exemple d'instruction de création de table :

CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

Prérequis : Votre MySQL doit prendre en charge le moteur fédéré (exécutez show moteurs ; vous pouvez voir s'il est pris en charge).

S'il y a un moteur FÉDÉRÉ, mais que le support est NON, cela signifie que votre mysql a ce moteur installé mais n'est pas activé, allez à la fin du fichier my.cnf Ajoutez une ligne fédérée et redémarrez mysql

S'il n'y a pas de ligne FEDERATED du tout, cela signifie que votre mysql n'a pas ce moteur installé, et vous ne pourrez pas jouer joyeusement . Il est préférable d'aller à l'entretien et à l'entretien de votre maison pour le faire. Eh bien, parce que la prochaine action est relativement importante, et je ne sais pas comment la faire

Explication : Le tableau créé via ; le moteur FEDERATED ne dispose que d'un fichier de définition de table en local, et le fichier de données existe dans la base de données distante. Ce moteur peut implémenter des fonctions d'accès aux données à distance similaires à DBLINK sous Oracle. C'est-à-dire que cette méthode de création de table créera uniquement un fichier de structure de table de la table B dans la base de données A. L'index, les données et autres fichiers de la table sont toujours dans la base de données B sur la machine B, ce qui est équivalent à juste Un raccourci vers la table B est créé dans la base de données A.

En conséquence, l'œuf ne fait plus mal. .

Quelques points à noter :

1. La structure de la table locale doit être exactement la même que celle de la table distante.

2. La base de données distante est actuellement limitée à MySQL

3 Les transactions ne sont pas prises en charge

4. La modification de la structure des tables n'est pas prise en charge

Commentaires supplémentaires. des autres internautes :

CREATE TABLE IF NOT EXISTS `logintoken` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` char(1) NOT NULL DEFAULT '0',
`loginName` varchar(20) DEFAULT NULL,
`token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.5.102:3306/zysso/logintoken';

Pour utiliser la table des jetons de connexion à distance de 5.12, il vous suffit d'activer FEDERATED vous-même. Il n'est pas nécessaire de l'activer dans 5.12

.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn