Tengo una base de datos MySQL que ha estado en producción y que se guardó y restauró varias veces con phpmyadmin y mysqldump/restore. Sospecho que la "actividad de producción" ha introducido algunas discrepancias entre esta estructura de base de datos y cualquier nueva base de datos "prístina" que se creó a partir del esquema original que define SQL.
cuando intento comparar la base de datos de producción con una instancia nueva, usando mysqldiff
, obtengo:
$ 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.
Desde eldocumentación mysqldiff
Cuando se especifica un par de bases de datos, todos los objetos de una base de datos se comparan con los objetos correspondientes de la otra. Cualquier objeto que no aparezca en ninguna de las bases de datos produce un error.
¿Es posible obtener información de depuración?
¿Qué debo hacer para generar un informe de diferencias útil?
Nota: estoy corriendo
mysql Ver 14.14 Distrib 5.5.43
- ubuntu linux
Respuesta1
mysqldiff
Solo te está diciendo que tienes una diferencia entre ambas bases de datos, con respecto al nombre de la base de datos: dev_si_brand_new
versus prod_si
.
Si no desea mysqldiff
detenerse en la primera diferencia encontrada y continuar la comparación, simplemente agregue el --force
argumento a su línea de comando:
--fuerza
No te detengas ante la primera diferencia encontrada. Procesa todos los objetos para encontrar todas las diferencias.
mysqldiff --force --server1=root@localhost dev_si_brand_new:prod_si