Untuk mengotomatiskan proses pencadangan salah satu database MySQL saya, saya ingin membandingkan struktur dua tabel (versi saat ini vs versi lama).
Bisakah Anda memikirkan kueri yang dapat membandingkan dua tabel?
Berikut adalah beberapa contoh tabel yang bisa Anda bandingkan.
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)
);
Dua tabel pertama memiliki struktur yang identik. Yang terakhir berbeda. Saya hanya perlu tahu apakah dua tabel memiliki struktur yang berbeda atau tidak. Saya tidak tertarik dengan perbedaannya.
Jawaban:
DUA TABEL DALAM DATABASE SAAT INI
Jika Anda ingin tahu apakah dua tabel berbeda, jalankan ini
Jika Anda benar-benar perlu melihat perbedaannya, jalankan ini
DUA TABEL DALAM DATABASE KHUSUS
Jika Anda ingin tahu apakah dua tabel berbeda dalam database
mydb
, jalankan iniJika Anda benar-benar perlu melihat perbedaannya, jalankan ini
DUA TABEL DALAM DATABASE BERBEDA
Jika Anda ingin tahu apakah
db1.tb1
dandb2.tb2
berbeda, jalankan iniJika Anda benar-benar perlu melihat perbedaannya, jalankan ini
COBALAH !!!
sumber
Anda dapat membandingkan checksum dari output SHOW CREATE TABLE product_today
sumber
Memperluas jawaban RolandoMySQLDBA:
Untuk melihat nama tabel juga, kueri ini:
sumber
Lihatlah tabel kolom di information_schema - bidang column_type. Itu akan memungkinkan Anda untuk membandingkan struktur tabel.
sumber
Cara pamungkas saya membandingkan 2 database (DB1, DB2) - hanya tabel / tampilan, batasan dan kunci asing tidak termasuk. Dalam kasus saya, saya selalu menggunakan SQL berikut untuk membandingkan PRODUKSI dengan UAT atau UAT dengan DEV.
DB DIFF (bandingkan tabel / tampilan)
sumber
untuk semua perubahan dalam struktur tabel dua database:
Ref .: dari RolandoMySQLDBA ans
sumber