Datenbankübergreifende Assoziationsabfragemethode in MySQL

Datenbankübergreifende Assoziationsabfragemethode in MySQL

Geschäftsszenario: Abfragen von Tabellen in verschiedenen Datenbanken

Die zu verknüpfenden Tabellen sind beispielsweise: Tabelle A in Datenbank A auf Maschine A und Tabelle B in Datenbank B auf Maschine B.

In diesem Fall ist es unmöglich, „select A.id,B.id from A left join B on ~~~;“ auszuführen, aber die Geschäftsanforderungen sind unveränderlich und das Datenbankdesign ist unveränderlich, was ein echter Krampf ist. .

Lösung: Erstellen Sie eine Tabelle B in Datenbank A auf Computer A. . .

Ich mache keine Witze, wir verwenden die Methode zum Erstellen von Tabellen basierend auf der föderierten Engine von MySQL.

Beispiel einer Anweisung zur Tabellenerstellung:

CREATE TABLE `table_name`(......) ENGINE = FEDERATED CONNECTION = 'mysql://[Benutzername]:[Passwort]@[Standort]:[Port]/[Datenbankname]/[Tabellenname]'

Voraussetzung: Ihr MySQL muss die föderierte Engine unterstützen (führen Sie „show engines“ aus, um zu prüfen, ob sie unterstützt wird).

Wenn eine FEDERATED-Engine vorhanden ist, aber der Support auf NO steht, bedeutet dies, dass Ihr MySQL diese Engine installiert, aber nicht aktiviert hat. Fügen Sie am Ende der Datei my.cnf eine Zeile „federated“ hinzu und starten Sie MySQL neu.

Wenn überhaupt keine FEDERATED-Zeile vorhanden ist, bedeutet dies, dass Ihre MySQL-Engine nicht installiert ist und Sie nicht glücklich spielen können. Bitten Sie am besten Ihren Betrieb und Ihre Wartung, das Problem zu beheben, da der nächste Schritt relativ groß ist und ich nicht weiß, wie ich das machen soll.

Erklärung: Die von der FEDERATED-Engine erstellte Tabelle verfügt nur über eine lokale Tabellendefinitionsdatei, und die Datendatei befindet sich in der Remote-Datenbank. Mit dieser Engine können Remote-Datenzugriffsfunktionen ähnlich wie DBLINK unter Oracle implementiert werden. Das heißt, diese Methode zur Tabellenerstellung erstellt nur eine Tabellenstrukturdatei der Tabelle B in Datenbank A. Der Tabellenindex, die Daten und andere Dateien befinden sich weiterhin in Datenbank B auf Maschine B. Dies entspricht der Erstellung einer Verknüpfung zu Tabelle B in Datenbank A.

Der Schmerz in den Eiern ist also weg. .

Einige Hinweise:

1. Die lokale Tabellenstruktur muss exakt mit der Remote-Tabelle übereinstimmen.

2. Die Remote-Datenbank ist derzeit auf MySQL beschränkt

3. Keine Unterstützung für Transaktionen

4. Die Änderung der Tabellenstruktur wird nicht unterstützt

Andere Internetnutzer fügten hinzu:

Tabelle erstellen, wenn `logintoken` nicht vorhanden ist (
`id` int(11) NICHT NULL AUTO_INCREMENT,
`Typ` char(1) NICHT NULL STANDARD '0',
`loginName` varchar(20) DEFAULT NULL,
`Token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` Zeitstempel NULL DEFAULT NULL,
PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=FEDERATED CONNECTION='mysql://root:[email protected]:3306/zysso/logintoken';

Um die Remote-5.12-Logintoken-Tabelle zu verwenden, müssen Sie FEDERATED nur selbst aktivieren. 5.12 muss es nicht aktivieren.

Das könnte Sie auch interessieren:
  • Beispiel einer datenbankübergreifenden Abfrage in MySQL
  • Beispiel für eine gemeinsame MySQL-Remote-Datenbankabfrage

<<:  Lösung zur Codeaufteilung im Vue-Projekt

>>:  Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Artikel empfehlen

Praxis der Verwendung von SuperMap in Vue

Inhaltsverzeichnis Vorwort Ressourcen zum Thema V...

Linux Redis-Sentinel-Konfigurationsdetails

herunterladen Download-Adresse: https://redis.io/...

Ändern Sie die MySQL-Datenbank-Engine in InnoDB

PS: Ich verwende hier PHPStudy2016 1. Stoppen Sie...

Vorgehensweise, wenn die Online-MySQL-Auto-Increment-ID erschöpft ist

Inhaltsverzeichnis Tabellendefinition - automatis...

Beispielcode zur Implementierung eines reinen CSS-Popup-Menüs mit Transform

Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript...

Einführung des Code-Prüftools stylelint zum Erfahrungsaustausch

Inhaltsverzeichnis Vorwort Text 1. Installieren S...

Mehrere Möglichkeiten zur Implementierung eines 0-ms-Verzögerungstimers in js

Inhaltsverzeichnis WarteschlangeMikrotask asynchr...

Einführung in die Verwendung von Ankern (benannte Anker) in HTML-Webseiten

Die folgenden Informationen sind aus dem Internet ...

Detaillierte Erklärung von count(), group by, order by in MySQL

Ich bin vor Kurzem auf ein Problem gestoßen, als ...