Para automatizar o processo de backup de um dos meus bancos de dados MySQL, eu gostaria de comparar a estrutura de duas tabelas (versão atual versus versão antiga).
Você consegue pensar em uma consulta que possa comparar duas tabelas?
Aqui estão alguns exemplos de tabelas 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. O último é diferente. Eu só preciso saber se duas tabelas têm estruturas diferentes ou não. Não estou interessado em saber como eles diferem.
Respostas:
DUAS MESAS NA BASE 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 MESAS EM UMA BASE DE DADOS ESPECÍFICA
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 MESAS EM DUAS BASES DE DADOS DIFERENTES
Se você quiser saber se
db1.tb1
edb2.tb2
é diferente, execute esteSe você realmente precisa ver as diferenças, execute este
DE UMA CHANCE !!!
fonte
Você pode comparar a soma de verificação da saída do SHOW CREATE TABLE product_today
fonte
Expandindo a resposta de RolandoMySQLDBA:
Para ver também o nome da tabela, consulte:
fonte
Dê uma olhada na tabela de colunas no campo information_schema - o column_type. Isso permitirá comparar estruturas da tabela.
fonte
Minha melhor maneira de comparar dois bancos de dados (DB1, DB2) - apenas tabelas / visualizações, restrições e chave estrangeira não está incluída. No meu caso, eu sempre uso o SQL a seguir para comparar PRODUCTION com UAT ou UAT com DEV.
DB DIFF (compare tabelas / visualizações)
fonte
para todas as alterações na estrutura da tabela de dois bancos de dados:
Ref .: de RolandoMySQLDBA ans
fonte