Il s'agit de la commande mysqldiff qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
mysqldiff - Identifier les différences entre les objets de base de données
SYNOPSIS
mysqldiff [Options] {db1[:db1] | {db1.obj1[:db2.obj2]} ...
DESCRIPTION
Cet utilitaire lit les définitions des objets et les compare à l'aide d'une méthode de type diff
pour déterminer s'ils sont identiques. L'utilitaire affiche les différences pour les objets
ce ne sont pas les mêmes.
Utilisez la notation db1:db2 pour nommer deux bases de données à comparer, ou bien simplement db1 à
comparer deux bases de données portant le même nom. Ce dernier cas est une notation de commodité pour
comparer des bases de données du même nom sur des serveurs différents.
La comparaison peut être exécutée avec deux bases de données de noms différents sur un même serveur en
en précisant uniquement le --serveur1 option. L'utilisateur peut également se connecter à un autre serveur en
spécifiant le --serveur2 option. Dans ce cas, db1 est extrait de server1 et db2 de
serveur2.
Lorsqu'une paire de bases de données est spécifiée, tous les objets d'une base de données sont comparés au
objets correspondants dans l'autre. Tout objet n'apparaissant dans aucune des bases de données produit
une erreur.
Pour comparer une paire spécifique d'objets, ajoutez un nom d'objet à chaque nom de base de données dans db.obj
format. Par exemple, utilisez db1.obj1:db2.obj2 pour comparer deux objets nommés, ou db1.obj1 à
comparer un objet du même nom dans des bases de données du même nom. Il n'est pas légal de
mélanger un nom de base de données avec un nom d'objet. Par exemple, db1.obj1:db2 et db1:db2.obj2 sont
illégal.
La comparaison peut être exécutée sur un seul serveur pour comparer deux bases de données de différentes
noms sur le même serveur en spécifiant uniquement le --serveur1 option. Alternativement, vous pouvez
connectez-vous également à un autre serveur en spécifiant le --serveur2 option. Dans ce cas, le premier
l'objet à comparer provient du serveur1 et le second du serveur2.
Par défaut, l'utilitaire génère les différences d'objet sous forme de rapport de différence. Cependant, vous
peut générer un rapport de transformation contenant des instructions SQL pour transformer le
objets de conformité à la place. Utilisez la valeur 'sql' pour le --typediff possibilité de produire un
liste qui contient les commandes ALTER appropriées pour se conformer aux définitions d'objet pour
les paires d'objets spécifiées. Si une transformation ne peut pas être formée, l'utilitaire signale le
diff de l'objet avec une déclaration d'avertissement. Voir les limitations importantes dans les NOTES
.
Pour spécifier comment afficher la sortie de style diff, utilisez l'une des valeurs suivantes avec le
--typediff option:
· unifiée (Par défaut)
Afficher la sortie au format unifié.
· aux contextes
Afficher la sortie du format de contexte.
· différer
Affichez la sortie de format de style différent.
· sql
Afficher la sortie de l'instruction de transformation SQL.
Le manuel de formation --changes-pour L'option contrôle la direction de la différence (en spécifiant le
objet à transformer) soit dans le rapport de différence (par défaut) soit dans la transformation
rapport (désigné par le --difftype=sql option). Considérez la commande suivante :
mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql \
db1.table1:dbx.table3
La base de données la plus à gauche (db1) existe sur le serveur désigné par le --serveur1 option
(hôte1). La base de données la plus à droite (dbx) existe sur le serveur désigné par le --serveur2
option (hôte2).
· --changes-for=serveur1 : Produire une sortie qui montre comment faire les définitions de
objets sur server1 comme les définitions des objets correspondants sur server2.
· --changes-for=serveur2 : Produire une sortie qui montre comment faire les définitions de
objets sur server2 comme les définitions des objets correspondants sur server1.
La direction par défaut est server1.
Pour sql format de différence, vous pouvez également voir la transformation inverse en spécifiant le
--show-inverse option.
L'utilitaire s'arrête à la première occurrence d'objets manquants ou lorsqu'un objet ne
rencontre. Pour remplacer ce comportement, spécifiez le --Obliger option pour que l'utilitaire
essayez de comparer tous les objets répertoriés comme arguments.
OPTIONS
mysqldiff accepte les options de ligne de commande suivantes :
· --aider
Affichez un message d'aide et quittez.
· --changes-for=
Spécifiez le serveur pour afficher les transformations pour correspondre à l'autre serveur. Par exemple, pour
voir la transformation pour transformer les définitions d'objet sur server1 pour correspondre à la
définitions correspondantes sur server2, utilisez --changes-for=serveur1. Les valeurs autorisées sont
server1 et server2. La valeur par défaut est server1.
· --difftype= , -ré
Spécifiez le format d'affichage des différences. Les valeurs de format autorisées sont unifiée, aux contextes,
différeret sql. La valeur par défaut est unifiée.
· --Obliger
Ne vous arrêtez pas à la première différence trouvée. Traiter tous les objets pour tout trouver
différences.
· --silencieux, -q
N'imprimez rien. Renvoie uniquement un code de sortie de réussite ou d'échec.
· --server1=
Informations de connexion pour le premier serveur au format :
<utilisateur>[ :passwd>]@hôte>[ :port>][ :douille>] ouchemin-de-connexion>[ :port>][ :douille>].
· --server2=
Informations de connexion pour le deuxième serveur au format :
<utilisateur>[ :passwd>]@hôte>[ :port>][ :douille>] ouchemin-de-connexion>[ :port>][ :douille>].
· --show-inverse
Produire un rapport de transformation contenant les instructions SQL pour conformer l'objet
définitions spécifiées à l'envers. Par exemple, si --changes-pour est défini sur server1,
générer également la transformation pour server2. Remarque : Les modifications inverses sont annotées
et marqué comme commentaires.
· --verbeux, -v
Spécifiez la quantité d'informations à afficher. Utilisez cette option plusieurs fois pour augmenter
la quantité d'informations. Par exemple, -v = verbeux, -vv = plus verbeux, -vvv =
déboguer.
· --version
Affichez les informations de version et quittez.
· --largeur=
Modifiez la largeur d'affichage du rapport de test. La valeur par défaut est de 75 caractères.
NOTES
Vous devez fournir des paramètres de connexion (utilisateur, hôte, mot de passe, etc.) pour un compte
qui dispose des privilèges appropriés pour accéder à tous les objets à comparer.
La fonctionnalité de transformation SQL présente les limitations connues suivantes :
· Lorsque des tables avec des différences de partition sont rencontrées, l'utilitaire génère le
ALTER TABLE pour toutes les autres modifications mais imprime un avertissement et omet le
différences de partition.
· Si la transformation détecte des options de table dans la table source (spécifiée avec le
--changes-pour option) qui ne sont pas modifiés ou n'existent pas dans la table cible, le
l'utilitaire génère le ALTER TABLE instruction pour tous les autres changements mais imprime un avertissement
et omet les différences d'options de table.
· Renommer pour les événements n'est pas pris en charge. Ceci est dû au fait mysqldiff compare des objets par
Nom. Dans ce cas, selon la direction de la différence, l'événement est identifié comme
besoin d'être ajouté ou un GOUTTE EVENT l'instruction est générée.
· Les modifications de la clause de définition des événements ne sont pas prises en charge.
· Les extensions SQL spécifiques à MySQL Cluster ne sont pas prises en charge.
Pour la --typediff option, les valeurs autorisées ne sont pas sensibles à la casse. En outre,
les valeurs peuvent être spécifiées comme n'importe quel préfixe non ambigu d'une valeur valide. Par exemple,
--typediff=d spécifie le type différent. Une erreur se produit si un préfixe correspond à plusieurs
valeur valide.
Le chemin d'accès aux outils client MySQL doit être inclus dans la variable d'environnement PATH dans
afin d'utiliser le mécanisme d'authentification avec login-paths. Cela permettra à l'utilitaire de
utilisez les outils my_print_defaults qui sont nécessaires pour lire les valeurs du chemin de connexion à partir du
fichier de configuration de connexion (.mylogin.cnf).
Si un identificateur d'objet de base de données spécifié comme argument contient des caractères spéciaux ou
est un mot réservé, alors il doit être correctement cité avec des backticks (`). À son tour,
les noms cités avec des backticks doivent également être cités avec des guillemets simples ou doubles selon
le système d'exploitation, c'est-à-dire (") sous Windows ou (') dans les systèmes autres que Windows, afin que le
utilitaires pour lire les identifiants entre guillemets comme un seul argument. Par exemple, pour montrer
la différence entre le tableau bizarre`table1 de la base de données bizarre`db.name et table
bizarre`table2 de la base de données autre : bizarre`db.name, la paire d'objets doit être spécifiée à l'aide
la syntaxe suivante (sous Windows) :
'`bizarre``db.name`.`weird``table1`:`other:weird``db.name`.`weird``table2`'.
EXEMPLES
Pour comparer les bases de données des employés et emp sur le serveur local, utilisez cette commande :
$ mysqldiff --server1=root@localhost employee:emp1
# server1 sur localhost : ... connecté.
AVERTISSEMENT : objets dans server1:employees mais pas dans server2:emp1 :
ÉVÉNEMENT : e1
Échec de la comparaison. Une ou plusieurs différences trouvées.
$ mysqldiff --server1=root@localhost \
employees.t1:emp1.t1 employees.t3:emp1.t3
# server1 sur localhost : ... connecté.
# Comparaison de employee.t1 à emp1.t1 [PASS]
# server1 sur localhost : ... connecté.
# Comparaison de employee.t3 à emp1.t3 [PASS]
Succès. Tous les objets sont les mêmes.
$ mysqldiff --server1=root@localhost \
employés.salaires:employé1.salaires --differ
# server1 sur localhost : ... connecté.
# Comparaison des employés.salaires à emp1.salaires [FAIL]
# Les définitions d'objets ne sont pas les mêmes :
CREER TABLE `salaires` (
`emp_no` int(11) NON NUL,
"salaire" int(11) NON NUL,
`from_date` date NON NULL,
date `to_date` NON NULL,
CLÉ PRIMAIRE (`emp_no`,`from_date`),
CLÉ `emp_no` (`emp_no`)
- ) MOTEUR=jeu de caractères par défaut InnoDB=latin1
? ^^^^^
+ ) ENGINE=MyISAM CHARSET PAR DEFAUT=latin1
? ++ ^^
Échec de la comparaison. Une ou plusieurs différences trouvées.
Les exemples suivants montrent comment générer un rapport de transformation. Supposons ce qui suit
définitions d'objets :
Hôte 1 :
CREATE TABLE db1.table1 (num entier, divers carboniser(30));
Hôte 2 :
CREATE TABLE dbx.table3 (num entier, notes carboniser(30), divers carboniser(55));
Pour générer un ensemble d'instructions SQL qui transforment la définition de db1.table1 en
dbx.table3, utilisez cette commande :
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--changes-for=serveur1 --difftype=sql \
db1.table1:dbx.table3
# server1 sur host1 : ... connecté.
# server2 sur host2 : ... connecté.
# Comparaison de db1.table1 à dbx.table3 [FAIL]
# Énoncés de transformation :
MODIFIER LA TABLE db1.table1
AJOUTER des notes de COLONNE carboniser(30) APRÈS a,
CHANGER LA COLONNE divers divers carboniser(55);
Échec de la comparaison. Une ou plusieurs différences trouvées.
Pour générer un ensemble d'instructions SQL qui transforment la définition de dbx.table3 en
db1.table1, utilisez cette commande :
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--changes-for=serveur2 --difftype=sql \
db1.table1:dbx.table3
# server1 sur host1 : ... connecté.
# server2 sur host2 : ... connecté.
# Comparaison de db1.table1 à dbx.table3 [FAIL]
# Énoncés de transformation :
MODIFIER LA TABLE dbx.table3
DÉPOSER les notes de COLONNE,
CHANGER LA COLONNE divers divers carboniser(30);
Échec de la comparaison. Une ou plusieurs différences trouvées.
Pour générer un ensemble d'instructions SQL qui transforment les définitions de dbx.table3 et
db1.table1 dans les deux sens, utilisez cette commande :
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--show-reverse --difftype=sql \
db1.table1:dbx.table3
# server1 sur host1 : ... connecté.
# server2 sur host2 : ... connecté.
# Comparaison de db1.table1 à dbx.table3 [FAIL]
# Énoncés de transformation :
# --destination=serveur1 :
MODIFIER LA TABLE db1.table1
AJOUTER des notes de COLONNE carboniser(30) APRÈS a,
CHANGER LA COLONNE divers divers carboniser(55);
# --destination=serveur2 :
# MODIFIER LA TABLE dbx.table3
# NOTES DE COLONNE SUPPRIMÉES,
# CHANGER LA COLONNE divers divers carboniser(30);
Échec de la comparaison. Une ou plusieurs différences trouvées.
DROIT D'AUTEUR
Utilisez mysqldiff en ligne en utilisant les services onworks.net