Para automatizar el proceso de copia de seguridad de una de mis bases de datos MySQL, me gustaría comparar la estructura de dos tablas (versión actual frente a versión anterior).
¿Se te ocurre una consulta que pueda comparar dos tablas?
Aquí hay algunas tablas de ejemplo que puede 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)
);
Las dos primeras tablas tienen estructuras idénticas. El último es diferente. Solo necesito saber si dos tablas tienen estructuras diferentes o no. No estoy interesado en cómo difieren.
Respuestas:
DOS TABLAS EN LA BASE DE DATOS ACTUAL
Si desea saber si dos tablas son diferentes, ejecute esto
Si realmente necesita ver las diferencias, ejecute esto
DOS TABLAS EN UNA BASE DE DATOS ESPECÍFICA
Si desea saber si dos tablas son diferentes en la base de datos
mydb
, ejecute estoSi realmente necesita ver las diferencias, ejecute esto
DOS TABLAS EN DOS BASES DE DATOS DIFERENTES
Si quieres saber si
db1.tb1
ydb2.tb2
son diferentes, ejecuta estoSi realmente necesita ver las diferencias, ejecute esto
DARLE UNA OPORTUNIDAD !!!
fuente
Puede comparar la suma de comprobación de salida de SHOW CREATE TABLE product_today
fuente
Ampliando la respuesta de RolandoMySQLDBA:
Para ver también el nombre de la tabla, consulte esto:
fuente
Eche un vistazo a la tabla de columnas en el esquema de información: el campo tipo_columna. Eso le permitirá comparar estructuras de tablas.
fuente
Mi mejor manera de comparar 2 bases de datos (DB1, DB2): solo tablas / vistas, restricciones y claves externas no están incluidas. En mi caso, siempre uso el siguiente SQL para comparar PRODUCTION con UAT o UAT con DEV.
DB DIFF (comparar tablas / vistas)
fuente
para todos los cambios en la estructura de tablas de dos bases de datos:
Ref .: de RolandoMySQLDBA ans
fuente