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

Analyse der Gründe, warum das MySQL-Indexsystem den B + -Baum verwendet

Inhaltsverzeichnis 1. Was ist ein Index? 2. Warum...

Ursachen und Lösungen für domänenübergreifende Probleme bei Ajax-Anfragen

Inhaltsverzeichnis 1. Wie entsteht Cross-Domain? ...

Anleitung zum Zurücksetzen des MySQL/MariaDB-Root-Passworts

Vorwort Vergessene Passwörter sind ein Problem, d...

MySQL-Techniken zum schnellen Datenvergleich

Im MySQL-Betrieb und bei der Wartung möchte ein F...

Mysql Master-Slave-Synchronisation Last_IO_Errno:1236 Fehlerlösung

Was ist der Grund für den Fehler Last_IO_Errno:12...

Detaillierte Beschreibung der chinesischen ffmpeg-Parameter

Details zu den Parametern der Version FFMPEG 3.4....

Detaillierte Erklärung zur Verwendung von Vue zum Laden von Wetterkomponenten

In diesem Artikel erfahren Sie, wie Sie mit Vue W...

HTML-Basis-URL-Tag

Seine Funktion besteht darin, einen globalen Stil ...

js zur Implementierung einer Überprüfungscode-Interferenz (dynamisch)

In diesem Artikelbeispiel wird der spezifische Co...

MySQL 5.6 Installationsschritte mit Bildern und Text

MySQL ist ein Open-Source-Verwaltungssystem für k...

Zusammenfassung des Wissens zum Vue V-Modell

​v-model ist eine Vue-Direktive, die eine bidirek...

So verwalten Sie MySQL-Indizes und Datentabellen

Inhaltsverzeichnis Tabellenkonflikte finden und b...