私は、運用中で、phpmyadmin と mysqldump/restore を使用して数回保存および復元した MySQL データベースを持っています。この「運用アクティビティ」によって、この DB 構造と、SQL を定義する元のスキーマから作成された新しい「元の」データベースとの間に矛盾が生じているのではないかと思います。
を使用して本番 DB と新しいインスタンスを比較しようとするとmysqldiff
、次のようになります。
$ mysqldiff --server1=root@localhost dev_si_brand_new:prod_si
# server1 on localhost: ... connected.
# Comparing `dev_si_brand_new` to `prod_si` [FAIL]
# Object definitions differ. (--changes-for=server1)
#
--- `dev_si_brand_new`
+++ `prod_si`
@@ -1 +1 @@
-CREATE DATABASE `dev_si_brand_new` /*!40100 DEFAULT CHARACTER SET latin1 */
+CREATE DATABASE `prod_si` /*!40100 DEFAULT CHARACTER SET latin1 */
Compare failed. One or more differences found.
データベース ペアが指定されると、一方のデータベース内のすべてのオブジェクトが、もう一方のデータベース内の対応するオブジェクトと比較されます。どちらのデータベースにも存在しないオブジェクトはエラーになります。
デバッグ情報を取得することは可能ですか?
有用な差分レポートを生成するには何をする必要がありますか?
注: 私は走っています
mysql Ver 14.14 Distrib 5.5.43
- Ubuntu Linux の
答え1
mysqldiff
dev_si_brand_new
は、DB 名に関して、両方の DB の間に違いがあることを単に伝えていますprod_si
。
mysqldiff
最初に見つかった相違点で停止せずに比較を続行したい場合は、--force
コマンド ラインに引数を追加します。
- 力
最初に見つかった相違点で停止しないでください。すべてのオブジェクトを処理して、すべての相違点を見つけます。
mysqldiff --force --server1=root@localhost dev_si_brand_new:prod_si