У меня есть база данных MySQL, которая была в производстве и сохранялась и восстанавливалась несколько раз с помощью phpmyadmin и mysqldump/restore. Я подозреваю, что "производственная деятельность" внесла некоторые расхождения между этой структурой БД и любой новой "чистой" базой данных, которая была создана из исходной схемы, определяющей SQL.
когда я пытаюсь сравнить производственную базу данных с совершенно новым экземпляром, используя mysqldiff
, я получаю:
$ 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.
Когда указана пара баз данных, все объекты в одной базе данных сравниваются с соответствующими объектами в другой. Любые объекты, не появляющиеся ни в одной из баз данных, вызывают ошибку.
Можно ли получить отладочную информацию?
Что мне нужно сделать, чтобы сгенерировать полезный отчет о различиях?
Примечание: Я бегу
mysql Ver 14.14 Distrib 5.5.43
- Ubuntu-линукс
решение1
mysqldiff
просто говорит вам, что между обеими БД есть разница, касающаяся имени БД: dev_si_brand_new
против prod_si
.
Если вы не хотите mysqldiff
останавливаться на первом обнаруженном различии и продолжать сравнение, просто добавьте аргумент --force
в командную строку:
--сила
Не останавливайтесь на первом найденном различии. Обработайте все объекты, чтобы найти все различия.
mysqldiff --force --server1=root@localhost dev_si_brand_new:prod_si