Eu tenho um banco de dados MySQL que está em produção e foi salvo e restaurado algumas vezes com phpmyadmin e mysqldump/restore. Suspeito que a "atividade de produção" introduziu algumas discrepâncias entre esta estrutura de banco de dados e qualquer novo banco de dados "purificado" criado a partir do esquema original que define o SQL.
quando tento comparar o banco de dados de produção com uma instância totalmente nova, usando mysqldiff
, recebo:
$ 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.
Quando um par de bancos de dados é especificado, todos os objetos de um banco de dados são comparados aos objetos correspondentes do outro. Quaisquer objetos que não apareçam em nenhum dos bancos de dados produzem um erro.
É possível obter informações de depuração?
O que preciso fazer para gerar um relatório de comparação útil?
Obs: estou correndo
mysql Ver 14.14 Distrib 5.5.43
- UbuntuLinux
Responder1
mysqldiff
está apenas dizendo que você tem uma diferença entre os dois bancos de dados, em relação ao nome do banco de dados: dev_si_brand_new
versus prod_si
.
Se você não quiser mysqldiff
parar na primeira diferença encontrada e continuar a comparação, basta adicionar o --force
argumento à sua linha de comando:
--força
Não pare na primeira diferença encontrada. Processe todos os objetos para encontrar todas as diferenças.
mysqldiff --force --server1=root@localhost dev_si_brand_new:prod_si