Während des Entwicklungs- und Debugging-Prozesses ist es notwendig, die Unterschiede zwischen dem neuen und dem alten Code zu vergleichen. Zum Vergleich können wir Versionskontrolltools wie git/svn verwenden. Es gibt auch Unterschiede in den Datenbanktabellenstrukturen verschiedener Versionen. Wir müssen auch die Unterschiede vergleichen und die SQL-Anweisungen zum Aktualisieren der Struktur abrufen. Beispielsweise funktioniert derselbe Codesatz in der Entwicklungsumgebung normal, weist jedoch in der Testumgebung Probleme auf. In diesem Fall müssen Sie neben der Überprüfung der Servereinstellungen auch vergleichen, ob es Unterschiede in den Datenbanktabellenstrukturen zwischen der Entwicklungsumgebung und der Testumgebung gibt. Nachdem Sie die Unterschiede gefunden haben, müssen Sie die Datenbanktabellenstruktur der Testumgebung aktualisieren, bis die Datenbanktabellenstrukturen der Entwicklungs- und Testumgebung konsistent sind. Wir können das Tool mysqldiff verwenden, um die Datenbanktabellenstruktur zu vergleichen und die SQL-Anweisung zum Aktualisieren der Struktur zu erhalten. 1.mysqldiff-Installationsmethode Das Tool mysqldiff befindet sich im Paket mysql-utilities. Für die Ausführung von mysql-utilities ist die Installation der Abhängigkeit mysql-connector-python erforderlich. mysql-connector-python-installation Download-Adresse: https://dev.mysql.com/downloads/connector/python/ MySQL-Dienstprogramme installieren Download-Adresse: https://downloads.mysql.com/archives/utilities/ Da ich ein Mac-System verwende, kann ich es direkt mit Brew installieren. brew installiere caskroom/cask/mysql-connector-python brew install caskroom/cask/mysql-utilities Führen Sie nach der Installation den Befehl aus, um die Version anzuzeigen. Wenn die Version angezeigt wird, bedeutet dies, dass die Installation erfolgreich war. mysqldiff --version MySQL-Dienstprogramme mysqldiff Version 1.6.5 Lizenztyp: GPLv2 2. So verwenden Sie mysqldiff Befehl: mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql db1.table1:dbx.table3 Parameterbeschreibung: --server1 gibt Datenbank 1 an Der Vergleich kann für eine einzelne Datenbank durchgeführt werden. Durch Angabe nur der Option „server1“ können verschiedene Tabellenstrukturen in derselben Datenbank verglichen werden. --difftype zeigt Informationen zu Unterschieden an vereinheitlicht (Standard) Kontext abweichen SQL-Befehle Wenn Sie SQL-Konvertierungsanweisungen erhalten möchten, ist der SQL-Anzeigemodus am besten geeignet. --character-set gibt den Zeichensatz an --changes-for wird verwendet, um das zu konvertierende Objekt anzugeben, d. h. die Richtung, in der Unterschiede generiert werden. Der Standardwert ist server1 --changes-for=server1 bedeutet, dass Server1 in Server2 konvertiert wird, wobei Server2 der primäre Server ist. --changes-for=server2 bedeutet, dass Server2 in die Struktur von Server1 konvertiert wird, wobei Server1 der primäre Server ist. --skip-table-options Unterschiede in AUTO_INCREMENT, ENGINE, CHARSET ignorieren. --version Version anzeigen Weitere Informationen zur Verwendung von mysqldiff-Parametern finden Sie in der offiziellen Dokumentation: 3. Beispiele Erstellen von Testdatenbanktabellen und -daten Datenbank Testa erstellen; Datenbank testb erstellen; Testa verwenden; TABELLE ERSTELLEN `tba` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(25) NICHT NULL, `Alter` int(10) unsigned NOT NULL, `addtime` int(10) unsigned NICHT NULL, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8; einfügen in `tba`(Name, Alter, Addtime) Werte('fdipzone', 18,1514089188); verwende testb; TABELLE ERSTELLEN `tbb` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NICHT NULL, `Alter` int(10) NICHT NULL, `addtime` int(10) NICHT NULL, PRIMÄRSCHLÜSSEL (`id`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; einfügen in `tbb`(Name, Alter, Addtime) Werte('fdipzone', 19,1514089188); Führen Sie einen Differenzvergleich durch, legen Sie Server1 als Hauptserver fest und Server2 sollte in die Datenbanktabellenstruktur von Server1 konvertiert werden mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb; # Server1 auf lokalem Host: ... verbunden. # Server2 auf lokalem Host: ... verbunden. # Vergleiche testa.tba mit testb.tbb [FEHLER] # Transformation für --changes-for=server2: # ALTER TABLE `testb`.`tbb` ÄNDERN SPALTE addtime addtime int(10) unsigned NOT NULL, ÄNDERN SPALTE Alter Alter int(10) unsigned NOT NULL, ÄNDERN SPALTE name name varchar(25) NICHT NULL, UMBENENNEN IN testa.tba , AUTO_INCREMENT=1002; # Vergleich fehlgeschlagen. Ein oder mehrere Unterschiede gefunden. Führen Sie die von mysqldiff zurückgegebene Update-SQL-Anweisung aus. mysql> ALTER TABLE `testb`.`tbb` -> ÄNDERN SPALTE addtime addtime int(10) unsigned NOT NULL, -> ÄNDERN SPALTE Alter Alter int(10) unsigned NOT NULL, -> SPALTE ÄNDERN Name Name varchar(25) NICHT NULL; Abfrage OK, 0 Zeilen betroffen (0,03 Sek.) Führen Sie mysqldiff erneut aus, um zu vergleichen. Es gibt keinen Unterschied in der Struktur, nur AUTO_INCREMENT ist anders. mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb; # Server1 auf lokalem Host: ... verbunden. # Server2 auf lokalem Host: ... verbunden. # Vergleiche testa.tba mit testb.tbb [FEHLER] # Transformation für --changes-for=server2: # ALTER TABLE `testb`.`tbb` UMBENENNEN IN testa.tba , AUTO_INCREMENT=1002; # Vergleich fehlgeschlagen. Ein oder mehrere Unterschiede gefunden. Stellen Sie AUTO_INCREMENT so ein, dass es ignoriert wird, und vergleichen Sie dann die Unterschiede. Der Vergleich ist erfolgreich. mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --skip-table-options --difftype=sql testa.tba:testb.tbb; # Server1 auf lokalem Host: ... verbunden. # Server2 auf lokalem Host: ... verbunden. # Vergleiche testa.tba mit testb.tbb [PASS] # Erfolg. Alle Objekte sind gleich. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: JavaScript implementiert die Verarbeitung großer Datei-Uploads
>>: Detailliertes Tutorial zur Nginx-Installation
for-Schleife Die For-Schleife durchläuft die Elem...
So schreiben Sie ein Vue-foreach-Array und durchl...
Inhaltsverzeichnis Vorwort Zusammenfassung des Pr...
Inhaltsverzeichnis Was ist Abflachung? Rekursion ...
Inhaltsverzeichnis 1. Rendern 2. Daten binden und...
Win10-Installation (überspringen, falls bereits i...
1. Python 3 herunterladen wget https://www.python...
Bevor wir über die CSS-Priorität sprechen, müssen...
Unter LINUX werden periodische Aufgaben normalerw...
Mit dem Befehl „Find“ können Sie in einem angegeb...
Dieser Artikel stellt hauptsächlich den Installati...
Dieser Artikel stellt eine sehr interessante Attr...
MySQL selbst wurde auf Basis des Dateisystems ent...
Inhaltsverzeichnis Vorwort 1. JDBC-Timeout-Einste...
Inhaltsverzeichnis Anforderungen: Implementierung...