Ich habe eine MySQL-Datenbank, die in Produktion war und einige Male mit phpmyadmin und mysqldump/restore gespeichert und wiederhergestellt wurde. Ich vermute, dass die „Produktionsaktivität“ einige Diskrepanzen zwischen dieser DB-Struktur und jeder neuen „unbearbeiteten“ Datenbank verursacht hat, die aus dem ursprünglichen Schema erstellt wurde, das SQL definiert.
Wenn ich versuche, die Produktionsdatenbank mit einer brandneuen Instanz zu vergleichen, mysqldiff
erhalte ich Folgendes:
$ mysqldiff --server1=root@localhost dev_si_brand_new:prod_si
# server1 on localhost: ... connected.
# Comparing `dev_si_brand_new` to `prod_si` [FAIL]
# Object definitions differ. (--changes-for=server1)
#
--- `dev_si_brand_new`
+++ `prod_si`
@@ -1 +1 @@
-CREATE DATABASE `dev_si_brand_new` /*!40100 DEFAULT CHARACTER SET latin1 */
+CREATE DATABASE `prod_si` /*!40100 DEFAULT CHARACTER SET latin1 */
Compare failed. One or more differences found.
Von demmysqldiff-Dokumentation
Wenn ein Datenbankpaar angegeben wird, werden alle Objekte in einer Datenbank mit den entsprechenden Objekten in der anderen verglichen. Alle Objekte, die in keiner der Datenbanken vorkommen, führen zu einem Fehler.
Ist es möglich, Debug-Informationen zu erhalten?
Was muss ich tun, um einen nützlichen Diff-Bericht zu erstellen?
Hinweis: Ich laufe
mysql Ver 14.14 Distrib 5.5.43
- Ubuntu Linux
Antwort1
mysqldiff
sagt Ihnen lediglich, dass es zwischen den beiden Datenbanken einen Unterschied hinsichtlich des Datenbanknamens gibt: dev_si_brand_new
gegenüber prod_si
.
Wenn Sie nicht möchten, mysqldiff
dass beim ersten gefundenen Unterschied angehalten wird, sondern der Vergleich fortgesetzt wird, fügen Sie --force
Ihrer Befehlszeile einfach das Argument hinzu:
--Gewalt
Bleiben Sie nicht beim ersten gefundenen Unterschied stehen. Verarbeiten Sie alle Objekte, um alle Unterschiede zu finden.
mysqldiff --force --server1=root@localhost dev_si_brand_new:prod_si