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:
|
<<: Lösung zur Codeaufteilung im Vue-Projekt
>>: Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte
In diesem Artikel finden Sie ein grafisches Tutor...
Inhaltsverzeichnis Vorwort Ressourcen zum Thema V...
herunterladen Download-Adresse: https://redis.io/...
PS: Ich verwende hier PHPStudy2016 1. Stoppen Sie...
Früher war es ziemlich mühsam, abgerundete Ecken ...
Count(*) oder Count(1) oder Count([column]) sind ...
Inhaltsverzeichnis Tabellendefinition - automatis...
1. Suchen Sie im Browser nach MySQL, um es herunt...
Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis Vorwort Text 1. Installieren S...
Das Boxmodell gibt die Breite und Höhe sowie die ...
Inhaltsverzeichnis WarteschlangeMikrotask asynchr...
Die folgenden Informationen sind aus dem Internet ...
Ich bin vor Kurzem auf ein Problem gestoßen, als ...