既存のデータベースのバージョン管理に Liquibase を使用しているので、
liquibase \
--logLevel=debug \
--driver=com.mysql.jdbc.Driver \
--classpath=lib/mysql-connector-java-5.1.30.jar \
--url="jdbc:mysql://127.0.0.1:3306/schema" \
--username=user \
--password=pass \
--diffTypes="data" \
--changeLogFile="./data.xml" generateChangeLog
変更セット xml を生成するため。
これは機能しますが、問題は、生成された変更セットを実行しようとしたときです。私は得る
子行を追加または更新できません: 外部キー ...' 変更セットのエクスポートされた順序が外部キーを考慮していないためです。
私の質問は次のとおりです。正しい順序で変更セットを生成できるコマンドオプションまたは何かがありますか、それとも変更セットを手動で並べ替えて目的の結果を得る必要がありますか?
アップデート:
通常、外部キーは外部キーの後に作成する必要があります。しかし、私たちのシステムでは、コア アプリケーションがデータベースの構造を作成し、複数のクライアント アプリケーションが同じデータベース内の独自のプライベート データをデータベースに入力しています。また、データを生成しているとき、データ変更セットはデータベース内のテーブルのアルファベット順に生成されます。これは、外部キー制約の可能性があります。変更セットを手動で配置することはできましたが、この特定の状況に対するより適切な回避策があるかどうかを知りたいです。