????
Current Path : /usr/local/share/man/man1/ |
Current File : //usr/local/share/man/man1/mysqldiff.1 |
.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MYSQLDIFF 1" .TH MYSQLDIFF 1 "2014-12-12" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mysqldiff \- compare MySQL database schemas .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& mysqldiff [B<options>] B<database1> B<database2> \& \& mysqldiff \-\-help .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fImysqldiff\fR is a Perl script front-end to the <\s-1CPAN\s0> module <MySQL::Diff> which compares the data structures (i.e. schema / table definitions) of two <MySQL> databases, and returns the differences as a sequence of MySQL commands suitable for piping into \fImysql\fR which will transform the structure of the first database to be identical to that of the second (\fIc.f.\fR \fIdiff\fR and \fIpatch\fR). .PP Database structures can be compared whether they are files containing table definitions or existing databases, local or remote. .PP \&\fBN.B.\fR The program makes \fIno\fR attempt to compare any of the data which may be stored in the databases. It is purely for comparing the table definitions. I have no plans to implement data comparison; it is a complex problem and I have no need of such functionality anyway. However there is another program <coldiff> which does this, and is based on an older program called \&\fIdatadiff\fR which seems to have vanished off the 'net. .PP For PostgreSQL there are similar tools such as <pgdiff> and <apgdiff>. .SH "EXAMPLES" .IX Header "EXAMPLES" .Vb 2 \& # compare table definitions in two files \& mysqldiff db1.mysql db2.mysql \& \& # compare table definitions in a file \*(Aqdb1.mysql\*(Aq with a database \*(Aqdb2\*(Aq \& mysqldiff db1.mysql db2 \& \& # interactively upgrade schema of database \*(Aqdb1\*(Aq to be like the \& # schema described in the file \*(Aqdb2.mysql\*(Aq \& mysqldiff \-A db1 db2.mysql \& \& # compare table definitions in two databases on a remote machine \& mysqldiff \-\-host=remote.host.com \-\-user=myaccount db1 db2 \& \& # compare table definitions in a local database \*(Aqfoo\*(Aq with a \& # database \*(Aqbar\*(Aq on a remote machine, when a file foo already \& # exists in the current directory \& mysqldiff \-\-host2=remote.host.com \-\-password=secret db:foo bar .Ve .SH "OPTIONS" .IX Header "OPTIONS" More details to come; for now run \f(CW\*(C`mysqldiff \-\-help\*(C'\fR. .SH "INTERNALS" .IX Header "INTERNALS" For both of the database structures being compared, the following happens: .IP "\(bu" 4 If the argument is a valid filename, the file is used to create a temporary database which \f(CW\*(C`mysqldump \-d\*(C'\fR is run on to obtain the table definitions in canonicalised form. The temporary database is then dropped. (The temporary database is named \&\f(CW\*(C`test_mysqldiff_temp_something\*(C'\fR because default MySQL permissions allow anyone to create databases beginning with the prefix \f(CW\*(C`test_\*(C'\fR.) .IP "\(bu" 4 If the argument is a database, \f(CW\*(C`mysqldump \-d\*(C'\fR is run directly on it. .IP "\(bu" 4 Where authentication is required, the hostname, username, and password given by the corresponding options are used (type \f(CW\*(C`mysqldiff \-\-help\*(C'\fR for more information). .IP "\(bu" 4 Each set of table definitions is now parsed into tables, and fields and index keys within those tables; these are compared, and the differences outputted in the form of MySQL statements. .SH "BUGS, DEVELOPMENT, CONTRIBUTING" .IX Header "BUGS, DEVELOPMENT, CONTRIBUTING" See <http://software.adamspiers.org/wiki/mysqldiff>. .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (c) 2000\-2011 Adam Spiers. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" MySQL::Diff, MySQL::Diff::Database, MySQL::Diff::Table, MySQL::Diff::Utils, mysql, mysqldump, mysqlshow .SH "AUTHOR" .IX Header "AUTHOR" Adam Spiers <mysqldiff@adamspiers.org>