Ini ialah arahan mysqldiff yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
mysqldiff - Kenalpasti Perbezaan Antara Objek Pangkalan Data
SINOPSIS
mysqldiff [pilihan] {db1[:db1] | {db1.obj1[:db2.obj2]} ...
DESCRIPTION
Utiliti ini membaca takrifan objek dan membandingkannya menggunakan kaedah seperti perbezaan
untuk menentukan sama ada mereka adalah sama. Utiliti memaparkan perbezaan untuk objek
itu tidak sama.
Gunakan notasi db1:db2 untuk menamakan dua pangkalan data untuk dibandingkan, atau, sebagai alternatif, hanya db1 kepada
bandingkan dua pangkalan data dengan nama yang sama. Kes terakhir ialah notasi kemudahan untuk
membandingkan pangkalan data dengan nama yang sama pada pelayan yang berbeza.
Perbandingan boleh dijalankan terhadap dua pangkalan data nama yang berbeza pada satu pelayan oleh
menyatakan hanya --pelayan1 pilihan. Pengguna juga boleh menyambung ke pelayan lain dengan
menyatakan yang --pelayan2 pilihan. Dalam kes ini, db1 diambil daripada pelayan1 dan db2 daripada
pelayan2.
Apabila pasangan pangkalan data ditentukan, semua objek dalam satu pangkalan data dibandingkan dengan
objek yang sepadan dalam yang lain. Sebarang objek yang tidak muncul dalam mana-mana pangkalan data menghasilkan
kesilapan.
Untuk membandingkan sepasang objek tertentu, tambahkan nama objek pada setiap nama pangkalan data dalam db.obj
format. Contohnya, gunakan db1.obj1:db2.obj2 untuk membandingkan dua objek bernama atau db1.obj1 dengan
bandingkan objek dengan nama yang sama dalam pangkalan data dengan nama yang sama. Tidak sah ke
campurkan nama pangkalan data dengan nama objek. Contohnya, db1.obj1:db2 dan db1:db2.obj2 ialah
haram.
Perbandingan boleh dijalankan terhadap pelayan tunggal untuk membandingkan dua pangkalan data yang berbeza
nama pada pelayan yang sama dengan menyatakan hanya --pelayan1 pilihan. Sebagai alternatif, anda boleh
juga menyambung ke pelayan lain dengan menyatakan --pelayan2 pilihan. Dalam kes ini, yang pertama
objek untuk dibandingkan diambil dari pelayan1 dan yang kedua dari pelayan2.
Secara lalai, utiliti menjana perbezaan objek sebagai laporan perbezaan. Walau bagaimanapun, anda
boleh menjana laporan transformasi yang mengandungi pernyataan SQL untuk mengubah
objek untuk pematuhan sebaliknya. Gunakan nilai 'sql' untuk --jenis berbeza pilihan untuk menghasilkan a
penyenaraian yang mengandungi arahan ALTER yang sesuai untuk mematuhi definisi objek untuk
pasangan objek yang ditentukan. Jika transformasi tidak dapat dibentuk, utiliti melaporkan
perbezaan objek bersama-sama dengan pernyataan amaran. Lihat batasan penting dalam NOTA
bawah seksyen ini.
Untuk menentukan cara memaparkan output gaya berbeza, gunakan salah satu nilai berikut dengan
--jenis berbeza pilihan:
· bersatu (lalai)
Paparkan output format bersatu.
· konteks
Paparkan output format konteks.
· berbeza
Paparkan output format gaya berbeza.
· sql
Paparkan output pernyataan transformasi SQL.
. --perubahan-untuk pilihan mengawal arah perbezaan (dengan menyatakan
objek yang akan diubah) sama ada dalam laporan perbezaan (lalai) atau transformasi
laporan (ditetapkan dengan --difftype=sql pilihan). Pertimbangkan arahan berikut:
mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql \
db1.table1:dbx.table3
Pangkalan data paling kiri (db1) wujud pada pelayan yang ditetapkan oleh --pelayan1 pilihan
(tuan rumah1). Pangkalan data paling kanan (dbx) wujud pada pelayan yang ditetapkan oleh --pelayan2
pilihan (host2).
· --changes-for=server1: Menghasilkan output yang menunjukkan cara membuat definisi bagi
objek pada pelayan1 seperti takrifan objek yang sepadan pada pelayan2.
· --changes-for=server2: Menghasilkan output yang menunjukkan cara membuat definisi bagi
objek pada pelayan2 seperti takrifan objek yang sepadan pada pelayan1.
Arah lalai ialah pelayan1.
Untuk sql format perbezaan, anda juga boleh melihat transformasi terbalik dengan menyatakan
--tunjuk-terbalik pilihan.
Utiliti berhenti pada kejadian pertama objek hilang atau apabila objek tidak
perlawanan. Untuk mengatasi tingkah laku ini, nyatakan - kekuatan pilihan untuk menyebabkan utiliti itu
cuba membandingkan semua objek yang disenaraikan sebagai hujah.
PILIHAN
mysqldiff menerima pilihan baris arahan berikut:
· --membantu
Paparkan mesej bantuan dan keluar.
· --perubahan-untuk=
Tentukan pelayan untuk menunjukkan transformasi untuk dipadankan dengan pelayan lain. Contohnya, kepada
lihat transformasi untuk mengubah definisi objek pada pelayan1 untuk memadankan
takrifan yang sepadan pada pelayan2, gunakan --changes-for=server1. Nilai yang dibenarkan ialah
server1 and server2. Lalai adalah server1.
· --difftype= , -d
Tentukan format paparan perbezaan. Nilai format yang dibenarkan ialah bersatu, konteks,
berbeza, dan sql. Lalai adalah bersatu.
· --paksa
Jangan berhenti pada perbezaan pertama yang ditemui. Proses semua objek untuk mencari semua
perbezaan.
· --senyap, -q
Jangan cetak apa-apa. Kembalikan hanya kod keluar kejayaan atau kegagalan.
· --server1=
Maklumat sambungan untuk pelayan pertama dalam format:
<pengguna>[:passwd>]@tuan rumah>[:pelabuhan>][:soket>] ataulaluan masuk>[:pelabuhan>][:soket>].
· --server2=
Maklumat sambungan untuk pelayan kedua dalam format:
<pengguna>[:passwd>]@tuan rumah>[:pelabuhan>][:soket>] ataulaluan masuk>[:pelabuhan>][:soket>].
· --tunjuk-terbalik
Menghasilkan laporan transformasi yang mengandungi pernyataan SQL untuk menyesuaikan objek
definisi yang dinyatakan secara terbalik. Contohnya, jika --perubahan-untuk ditetapkan kepada pelayan1,
juga menjana transformasi untuk pelayan2. Nota: Perubahan terbalik diberi anotasi
dan ditandakan sebagai ulasan.
· --verbose, -v
Nyatakan jumlah maklumat yang hendak dipaparkan. Gunakan pilihan ini beberapa kali untuk meningkatkan
jumlah maklumat. Sebagai contoh, -v = verbose, -vv = lebih bertele-tele, -vvv =
nyahpepijat.
· --versi
Paparkan maklumat versi dan keluar.
· --lebar=
Tukar lebar paparan laporan ujian. Lalai ialah 75 aksara.
NOTA
Anda mesti menyediakan parameter sambungan (pengguna, hos, kata laluan, dan sebagainya) untuk akaun
yang mempunyai keistimewaan yang sesuai untuk mengakses semua objek untuk dibandingkan.
Ciri transformasi SQL mempunyai batasan yang diketahui ini:
· Apabila jadual dengan perbezaan partition ditemui, utiliti menjana
UBAH JADUAL pernyataan untuk semua perubahan lain tetapi mencetak amaran dan meninggalkan
perbezaan partition.
· Jika transformasi mengesan pilihan jadual dalam jadual sumber (dinyatakan dengan
--perubahan-untuk pilihan) yang tidak diubah atau tidak wujud dalam jadual sasaran, the
utiliti menjana UBAH JADUAL pernyataan untuk semua perubahan lain tetapi mencetak amaran
dan meninggalkan perbezaan pilihan jadual.
· Namakan semula untuk acara tidak disokong. Ini adalah kerana mysqldiff membandingkan objek dengan
nama. Dalam kes ini, bergantung pada arah perbezaan, peristiwa itu dikenal pasti sebagai
perlu ditambah atau a GUGUR PERISTIWA pernyataan dijana.
· Perubahan dalam klausa penentu untuk acara tidak disokong.
· Sambungan SQL khusus untuk Kluster MySQL tidak disokong.
Bagi --jenis berbeza pilihan, nilai yang dibenarkan tidak sensitif huruf besar. Sebagai tambahan,
nilai boleh ditentukan sebagai mana-mana awalan yang tidak jelas bagi nilai yang sah. Sebagai contoh,
--difftype=d menyatakan jenis yang berbeza. Ralat berlaku jika awalan sepadan dengan lebih daripada satu
nilai yang sah.
Laluan ke alat klien MySQL harus dimasukkan dalam pembolehubah persekitaran PATH dalam
untuk menggunakan mekanisme pengesahan dengan laluan log masuk. Ini akan membolehkan utiliti untuk
gunakan alat my_print_defaults yang diperlukan untuk membaca nilai laluan log masuk daripada
fail konfigurasi log masuk (.mylogin.cnf).
Jika mana-mana pengecam objek pangkalan data yang dinyatakan sebagai argumen mengandungi aksara khas atau
ialah perkataan terpelihara, maka ia mesti dipetik dengan tepat dengan tanda kutip (`). Sebaliknya,
nama yang dipetik dengan tanda belakang juga mesti dipetik dengan petikan tunggal atau berganda bergantung pada
sistem pengendalian, iaitu (") dalam Windows atau (') dalam sistem bukan Windows, supaya
utiliti untuk membaca pengecam yang dipetik backtick sebagai satu hujah. Sebagai contoh, untuk menunjukkan
perbezaan antara jadual pelik`jadual1 daripada pangkalan data nama pelik`db dan jadual
pelik`jadual2 daripada pangkalan data other:weird`db.name, pasangan objek mesti ditentukan menggunakan
sintaks berikut (dalam bukan Windows):
'`pelik``db.nama`.`pelik``jadual1`:`lain:pelik``db.nama`.`pelik``jadual2`'.
CONTOH
Untuk membandingkan pekerja dan pangkalan data emp pada pelayan tempatan, gunakan arahan ini:
$ mysqldiff --server1=root@localhost employees:emp1
# pelayan1 pada localhost: ... disambungkan.
AMARAN: Objek dalam server1:employees tetapi tidak dalam server2:emp1:
ACARA: e1
Bandingkan gagal. Satu atau lebih perbezaan ditemui.
$ mysqldiff --server1=root@localhost \
employees.t1:emp1.t1 employees.t3:emp1.t3
# pelayan1 pada localhost: ... disambungkan.
# Membandingkan pekerja.t1 dengan emp1.t1 [LULUS]
# pelayan1 pada localhost: ... disambungkan.
# Membandingkan pekerja.t3 dengan emp1.t3 [LULUS]
Kejayaan. Semua objek adalah sama.
$ mysqldiff --server1=root@localhost \
pekerja.gaji:emp1.gaji --berbeza
# pelayan1 pada localhost: ... disambungkan.
# Membandingkan pekerja.gaji dengan emp1.gaji [GAGAL]
# Takrifan objek tidak sama:
CIPTA JADUAL `gaji` (
`emp_no` int(11) BUKAN NULL,
`gaji` int(11) BUKAN NULL,
`from_date` tarikh BUKAN NULL,
`to_date` tarikh BUKAN NULL,
KUNCI UTAMA (`emp_no`,`from_date`),
KEY `emp_no` (`emp_no`)
- ) ENJIN=CARSET LALAI InnoDB=latin1
? ^^^^
+ ) ENJIN=CHARSET LALAI MyISAM=latin1
? ++ ^^^
Bandingkan gagal. Satu atau lebih perbezaan ditemui.
Contoh berikut menunjukkan cara menjana laporan transformasi. Andaikan perkara berikut
definisi objek:
hos1:
BUAT JADUAL db1.table1 (num int, misc tangki(30));
hos2:
BUAT JADUAL dbx.table3 (bilangan int, nota tangki(30), lain-lain tangki(55));
Untuk menjana satu set pernyataan SQL yang mengubah takrifan db1.table1 kepada
dbx.table3, gunakan arahan ini:
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--changes-for=server1 --difftype=sql \
db1.table1:dbx.table3
# pelayan1 pada hos1: ... disambungkan.
# pelayan2 pada hos2: ... disambungkan.
# Membandingkan db1.table1 dengan dbx.table3 [GAGAL]
# Penyataan transformasi:
ALTER JADUAL db1.table1
TAMBAHKAN nota LAjur tangki(30) SELEPAS a,
TUKAR KOLUM lain lain tangki(55);
Bandingkan gagal. Satu atau lebih perbezaan ditemui.
Untuk menjana satu set pernyataan SQL yang mengubah definisi dbx.table3 kepada
db1.table1, gunakan arahan ini:
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--changes-for=server2 --difftype=sql \
db1.table1:dbx.table3
# pelayan1 pada hos1: ... disambungkan.
# pelayan2 pada hos2: ... disambungkan.
# Membandingkan db1.table1 dengan dbx.table3 [GAGAL]
# Penyataan transformasi:
ALTER JADUAL dbx.table3
DROP COLUMN nota,
TUKAR KOLUM lain lain tangki(30);
Bandingkan gagal. Satu atau lebih perbezaan ditemui.
Untuk menjana satu set pernyataan SQL yang mengubah takrifan dbx.table3 dan
db1.table1 dalam kedua-dua arah, gunakan arahan ini:
$ mysqldiff --server1=root@host1 --server2=root@host2 \
--show-reverse --difftype=sql \
db1.table1:dbx.table3
# pelayan1 pada hos1: ... disambungkan.
# pelayan2 pada hos2: ... disambungkan.
# Membandingkan db1.table1 dengan dbx.table3 [GAGAL]
# Penyataan transformasi:
# --destination=server1:
ALTER JADUAL db1.table1
TAMBAHKAN nota LAjur tangki(30) SELEPAS a,
TUKAR KOLUM lain lain tangki(55);
# --destination=server2:
# ALTER JADUAL dbx.table3
# DROP COLUMN nota,
# TUKAR KOLUM lain-lain tangki(30);
Bandingkan gagal. Satu atau lebih perbezaan ditemui.
HAKCIPTA
Gunakan mysqldiff dalam talian menggunakan perkhidmatan onworks.net