Este es el comando mysqldiff que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
mysqldiff - Identificar las diferencias entre los objetos de la base de datos
SINOPSIS
mysqldiff [opciones] {db1[: db1] | {db1.obj1[: db2.obj2]} ...
DESCRIPCIÓN
Esta utilidad lee las definiciones de objetos y las compara usando un método similar a diff
para determinar si son iguales. La utilidad muestra las diferencias de los objetos.
que no son lo mismo.
Utilice la notación db1: db2 para nombrar dos bases de datos para comparar o, alternativamente, solo db1 para
compare dos bases de datos con el mismo nombre. El último caso es una notación de conveniencia para
comparar bases de datos del mismo nombre en diferentes servidores.
La comparación se puede ejecutar con dos bases de datos de diferentes nombres en un solo servidor por
especificando solo el --servidor 1 opción. El usuario también puede conectarse a otro servidor
especificando el --servidor 2 opción. En este caso, db1 se toma de server1 y db2 de
servidor2.
Cuando se especifica un par de bases de datos, todos los objetos de una base de datos se comparan con el
objetos correspondientes en el otro. Cualquier objeto que no aparezca en ninguna de las bases de datos producirá
un error.
Para comparar un par específico de objetos, agregue un nombre de objeto a cada nombre de base de datos en db.obj
formato. Por ejemplo, utilice db1.obj1: db2.obj2 para comparar dos objetos con nombre, o db1.obj1 para
comparar un objeto con el mismo nombre en bases de datos con el mismo nombre. No es legal
mezclar un nombre de base de datos con un nombre de objeto. Por ejemplo, db1.obj1: db2 y db1: db2.obj2 son
ilegal.
La comparación se puede ejecutar en un solo servidor para comparar dos bases de datos de diferentes
nombres en el mismo servidor especificando solo el --servidor 1 opción. Alternativamente, puede
también conectarse a otro servidor especificando el --servidor 2 opción. En este caso, el primer
El objeto a comparar se toma del servidor1 y el segundo del servidor2.
De forma predeterminada, la utilidad genera diferencias de objetos como un informe de diferencias. Sin embargo, tu
puede generar un informe de transformación que contiene sentencias SQL para transformar el
objetos de conformidad en su lugar. Utilice el valor 'sql' para el --tipo de diferencia opción para producir un
listado que contiene los comandos ALTER apropiados para conformar las definiciones de objeto para
los pares de objetos especificados. Si no se puede formar una transformación, la utilidad informa el
diff del objeto junto con una declaración de advertencia. Ver limitaciones importantes en las NOTAS
.
Para especificar cómo mostrar la salida de estilo diff, use uno de los siguientes valores con el
--tipo de diferencia opción:
· unificado (Por defecto)
Muestra la salida de formato unificado.
· contexto
Muestra la salida del formato de contexto.
· diferir de
Muestra la salida de formato de estilo diferente.
· sql
Muestra la salida de la declaración de transformación SQL.
La - cambios-para La opción controla la dirección de la diferencia (especificando la
objeto a transformar) en el informe de diferencias (predeterminado) o en la transformación
informe (designado con el --difftype = sql opción). Considere el siguiente comando:
mysqldiff --server1 = root @ host1 --server2 = root @ host2 --difftype = sql \
db1.table1: dbx.table3
La base de datos más a la izquierda (db1) existe en el servidor designado por el --servidor 1 opción
(host1). La base de datos más a la derecha (dbx) existe en el servidor designado por el --servidor 2
opción (host2).
· --changes-for = server1: Produce un resultado que muestra cómo hacer las definiciones de
objetos en server1 como las definiciones de los objetos correspondientes en server2.
· --changes-for = server2: Produce un resultado que muestra cómo hacer las definiciones de
objetos en server2 como las definiciones de los objetos correspondientes en server1.
La dirección predeterminada es server1.
Para los ensayos clínicos de CRISPR, sql formato de diferencia, también puede ver la transformación inversa especificando el
--mostrar-reversa .
La utilidad se detiene en la primera aparición de objetos faltantes o cuando un objeto no
fósforo. Para anular este comportamiento, especifique el --fuerza opción para hacer que la utilidad
intente comparar todos los objetos listados como argumentos.
OPCIONES
mysqldiff acepta las siguientes opciones de la línea de comandos:
· --ayuda
Muestre un mensaje de ayuda y salga.
· --Cambios-para =
Especifique el servidor para mostrar las transformaciones para que coincidan con el otro servidor. Por ejemplo, para
ver la transformación para transformar las definiciones de objeto en el servidor1 para que coincida con el
definiciones correspondientes en server2, use --changes-for = server1. Los valores permitidos son
server1 y server2. El valor predeterminado es server1.
· --Difftype = , -D
Especifique el formato de visualización de la diferencia. Los valores de formato permitidos son unificado, contexto,
diferir de y sql. El valor predeterminado es unificado.
· --Fuerza
No se detenga ante la primera diferencia encontrada. Procesar todos los objetos para encontrarlos todos
Diferencias.
· --Quiet, -q
No imprima nada. Devuelve solo un código de salida de éxito o fracaso.
· --Server1 =
Información de conexión para el primer servidor en el formato:
<usuario> [:passwd>] @host> [:Puerto>] [:enchufe>] oruta de acceso> [:Puerto>] [:enchufe>].
· --Server2 =
Información de conexión para el segundo servidor en el formato:
<usuario> [:passwd>] @host> [:Puerto>] [:enchufe>] oruta de acceso> [:Puerto>] [:enchufe>].
· --Show-reverse
Producir un informe de transformación que contenga las declaraciones SQL para conformar el objeto.
definiciones especificadas al revés. Por ejemplo, si - cambios-para está configurado en server1,
también genera la transformación para server2. Nota: los cambios inversos están anotados
y marcado como comentarios.
· --Verbose, -v
Especifique cuánta información mostrar. Utilice esta opción varias veces para aumentar
la cantidad de información. Por ejemplo, -v = detallado, -vv = más detallado, -vvv =
depurar.
· --versión
Muestra la información de la versión y sale.
· --Ancho =
Cambie el ancho de visualización del informe de prueba. El valor predeterminado es 75 caracteres.
NOTAS
Debe proporcionar los parámetros de conexión (usuario, host, contraseña, etc.) para una cuenta
que tiene los privilegios adecuados para acceder a todos los objetos que se van a comparar.
La función de transformación de SQL tiene estas limitaciones conocidas:
· Cuando se encuentran tablas con diferencias de partición, la utilidad genera el
ALTER MESA DE NOCHE declaración para todos los demás cambios, pero imprime una advertencia y omite la
diferencias de partición.
· Si la transformación detecta opciones de tabla en la tabla de origen (especificadas con el
- cambios-para opción) que no se modifican o no existen en la tabla de destino, la
utilidad genera el ALTER MESA DE NOCHE declaración para todos los demás cambios, pero imprime una advertencia
y omite las diferencias de opciones de la tabla.
· No se admite el cambio de nombre de los eventos. Esto es porque mysqldiff compara objetos por
nombre. En este caso, dependiendo de la dirección de la diferencia, el evento se identifica como
necesita ser agregado o un DROP EVENT se genera la declaración.
· No se admiten cambios en la cláusula de definición de eventos.
· No se admiten las extensiones SQL específicas de MySQL Cluster.
Para el --tipo de diferencia opción, los valores permitidos no distinguen entre mayúsculas y minúsculas. Además,
los valores se pueden especificar como cualquier prefijo inequívoco de un valor válido. Por ejemplo,
--difftype = d especifica el tipo diferente. Se produce un error si un prefijo coincide con más de uno.
valor válido.
La ruta a las herramientas del cliente MySQL debe incluirse en la variable de entorno PATH en
para utilizar el mecanismo de autenticación con rutas de acceso. Esto permitirá que la utilidad
utilice las herramientas my_print_defaults que se requieren para leer los valores de la ruta de acceso de la
archivo de configuración de inicio de sesión (.mylogin.cnf).
Si algún identificador de objeto de base de datos especificado como argumento contiene caracteres especiales o
es una palabra reservada, entonces debe citarse apropiadamente con comillas invertidas (`). Sucesivamente,
Los nombres citados con comillas inversas también deben estar entre comillas simples o dobles, dependiendo de
el sistema operativo, es decir (") en Windows o (') en sistemas que no sean Windows, con el fin de
utilidades para leer identificadores con comillas invertidas como un solo argumento. Por ejemplo, para mostrar
la diferencia entre la mesa mesa rara1 de la base de datos extraño`db.nombre y mesa
mesa rara2 de la base de datos otro: weird`db.name, el par de objetos debe especificarse utilizando
la siguiente sintaxis (en no Windows):
'`weird``db.name``weird``table1`:` other: weird``db.name``weird``table2`'.
EJEMPLOS
Para comparar las bases de datos de empleados y emp en el servidor local, use este comando:
$ mysqldiff --server1 = root @ localhost empleados: emp1
# server1 en localhost: ... conectado.
ADVERTENCIA: Objetos en servidor1: empleados pero no en servidor2: emp1:
EVENTO: e1
Comparar falló. Se encontraron una o más diferencias.
$ mysqldiff --server1 = root @ localhost \
employees.t1:emp1.t1 employees.t3:emp1.t3
# server1 en localhost: ... conectado.
# Comparando employee.t1 con emp1.t1 [PASS]
# server1 en localhost: ... conectado.
# Comparando employee.t3 con emp1.t3 [PASS]
Éxito. Todos los objetos son iguales.
$ mysqldiff --server1 = root @ localhost \
empleados.salarios: emp1.salaries --differ
# server1 en localhost: ... conectado.
# Comparación de employee.salaries con emp1.salaries [FAIL]
# Las definiciones de objetos no son las mismas:
CREAR TABLA `salarios` (
`emp_no` int(11) NO NULO,
`salario` int(11) NO NULO,
`from_date` fecha NO NULL,
`to_date` fecha NO NULL,
CLAVE PRIMARIA (`emp_no`,` from_date`),
CLAVE `emp_no` (` emp_no`)
-) MOTOR = InnoDB DEFAULT CHARSET = latin1
? ^^^^^
+) MOTOR = MyISAM DEFAULT CHARSET = latin1
? ++^^^
Comparar falló. Se encontraron una o más diferencias.
Los siguientes ejemplos muestran cómo generar un informe de transformación. Suponga lo siguiente
definiciones de objeto:
Anfitrión1:
CREAR TABLA db1.table1 (num int, misc tanque(30));
Anfitrión2:
CREAR TABLA dbx.table3 (num int, notas tanque(30), varios tanque(55));
Generar un conjunto de sentencias SQL que transformen la definición de db1.table1 en
dbx.table3, use este comando:
$ mysqldiff --server1 = root @ host1 --server2 = root @ host2 \
--cambios-para = servidor1 --difftype = sql \
db1.table1: dbx.table3
# server1 en host1: ... conectado.
# server2 en host2: ... conectado.
# Comparando db1.table1 con dbx.table3 [FAIL]
# Declaraciones de transformación:
ALTERAR TABLA db1.table1
AÑADIR COLUMNA notas tanque(30) DESPUÉS de a,
CAMBIAR COLUMNA misceláneos misceláneos tanque(55);
Comparar falló. Se encontraron una o más diferencias.
Generar un conjunto de sentencias SQL que transformen la definición de dbx.table3 en
db1.table1, use este comando:
$ mysqldiff --server1 = root @ host1 --server2 = root @ host2 \
--cambios-para = servidor2 --difftype = sql \
db1.table1: dbx.table3
# server1 en host1: ... conectado.
# server2 en host2: ... conectado.
# Comparando db1.table1 con dbx.table3 [FAIL]
# Declaraciones de transformación:
ALTERAR TABLA dbx.table3
DROP COLUMN notas,
CAMBIAR COLUMNA misceláneos misceláneos tanque(30);
Comparar falló. Se encontraron una o más diferencias.
Generar un conjunto de sentencias SQL que transformen las definiciones de dbx.table3 y
db1.table1 en ambas direcciones, use este comando:
$ mysqldiff --server1 = root @ host1 --server2 = root @ host2 \
--show-reverse --difftype = sql \
db1.table1: dbx.table3
# server1 en host1: ... conectado.
# server2 en host2: ... conectado.
# Comparando db1.table1 con dbx.table3 [FAIL]
# Declaraciones de transformación:
# --destino = servidor1:
ALTERAR TABLA db1.table1
AÑADIR COLUMNA notas tanque(30) DESPUÉS de a,
CAMBIAR COLUMNA misceláneos misceláneos tanque(55);
# --destino = servidor2:
# ALTERAR TABLA dbx.table3
# DROP COLUMN notas,
# CAMBIAR COLUMNA misceláneos misceláneos tanque(30);
Comparar falló. Se encontraron una o más diferencias.
DERECHOS DE AUTOR
Use mysqldiff en línea usando los servicios de onworks.net