Para automatizar o processo de backup de um dos meus bancos de dados MySQL, gostaria de comparar a estrutura de duas tabelas (versão atual vs versão antiga).
Você consegue pensar em uma consulta que possa comparar duas tabelas?
Aqui estão algumas tabelas de exemplo que você pode comparar.
CREATE TABLE product_today
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_yesterday
(
pname VARCHAR(150),
price int,
PRIMARY KEY (pname)
);
CREATE TABLE product_2days_back
(
pname VARCHAR(15),
price int,
PRIMARY KEY (pname)
);
As duas primeiras tabelas têm estruturas idênticas. A última é diferente. Eu só preciso saber se duas tabelas têm estruturas diferentes ou não. Eu não estou interessado em como eles diferem.
DUAS TABELAS NO BANCO DE DADOS ATUAL
Se você quiser saber se duas tabelas são diferentes, execute este
Se você realmente precisa ver as diferenças, execute este
DUAS TABELAS EM UM BANCO DE DADOS ESPECÍFICO
Se você quiser saber se duas tabelas são diferentes no banco de dados
mydb
, execute esteSe você realmente precisa ver as diferenças, execute este
DUAS TABELAS EM DOIS BANCOS DE DADOS DIFERENTES
Se você quiser saber se
db1.tb1
edb2.tb2
são diferentes, execute esteSe você realmente precisa ver as diferenças, execute este
DE UMA CHANCE !!!
Você pode comparar a soma de verificação da saída de SHOW CREATE TABLE product_today
Expandindo a resposta do RolandoMySQLDBA:
Para ver também o nome da tabela, consulte isto:
Dê uma olhada na tabela de colunas no information_schema - o campo column_type. Isso permitirá que você compare as estruturas da tabela.
Minha melhor maneira de comparar 2 bancos de dados (DB1, DB2) - apenas tabelas/visualizações, restrições e chave estrangeira não estão incluídas. No meu caso eu sempre uso o seguinte SQL para comparar PRODUCTION com UAT ou UAT com DEV.
DB DIFF (comparar tabelas/visualizações)
Estou atrasado, mas estou postando minha resposta para que alguém possa ter mais opções para escolher o formulário
Recebi um desafio para migrar dados de um banco de dados antigo para um novo. Uma coisa foi que as tabelas mantiveram o nome, mas a estrutura foi alterada. Os valores padrão foram dados a mim em cada tabela e onde não foi fornecido, foi o trabalho de outra pessoa para fazê-lo. O RDBMS era o MariaDb 10.1 e usei o seguinte script para obter a diferença nas colunas. Com Isso você pode adicionar informações adicionais sobre a estrutura dos campos. Espero não ter errado o alvo da pergunta.
para todas as alterações na estrutura da tabela de dois bancos de dados:
Ref.: de RolandoMySQLDBA ans