0

データベースのスキーマを変更するために liquibase を使用できます。しかし、たとえば、期間中にチェンジセットを取得する必要があります

1/1: add table1 => 1.0
1/10: add table2
1/18: alter table1 => 2.0
1/21: alter table2 
1/28: add table3 => 3.0

1/10~1/28、1/18~1/21のチェンジセット(SQLコマンド)を取得したいのですが可能ですか?

[更新] マークの返信に感謝します。開発環境で上記の変更セットにバージョンを追加します。また、本番データベースが 1.0 で、2.0 (または 3.0) に直接アップグレードしたいが、liquibase を使用して SQL コマンドを生成し、手動で実行したい場合。

ロールバックには問題があり、開発データベースをロールバックすると、既にデータベースにあるデータを再作成する必要があります。それに対する提案はありますか?

4

1 に答える 1

0

コマンドラインのドキュメントを読むことをお勧めします。

日付に基づいて SQL を生成するには、次のようにするしかないと思います。

liquibase rollbackToDate <date/time> 
liquibase tag <version so can rollback here again>
liquibase updateSQL > keepUpdate.sql
liquibase update

アップデート

あなたがしようとしていること (SQL を使用して本番環境を更新する) は、liquibase がサポートするように設計されている一般的なユースケースです。これは私のお気に入りの機能の 1 つです。

問題は....理想的な世界では、開発データベースを吹き飛ばしてゼロから始めることができるはずです。明らかに、データを管理するためのリキベース変更セットがないため、いくつかの代替手段を検討する必要があります....

アプローチ 1: 新しい DEV データベースを作成する

SQL クエリを実行し、開発用 DB にあるチェンジセットの数を確認します。

SELECT ORDEREXECUTED, DATEEXECUTED, ID, FILENAME, DESCRIPTION, COMMENTS 
FROM DATABASECHANGELOG 
ORDER BY ORDEREXECUTED

日付を分析し、バージョン 3.0 から 2.0 (2 つの変更セット) および 1.0 (4 つの変更セット) に戻す変更セットの数を確認します。

新しいデータベースを作成し、liquibase 変更セットを適用して、スキーマをリビジョン 3.0 にします。

liquibase update

バージョン 2.0 -> 3.0 アップグレード用の SQL を作成するには

liquibase rollbackCount 2
liquibase updateSQL         > upgrade-2_0-3_0.sql
liquibase futureRollbackSQL > rollback-2_0-3_0.sql

バージョン 1.0 -> 3.0 アップグレード用の SQL を作成します。

liquibase rollbackCount 2
liquibase updateSQL         > upgrade-1_0-3_0.sql
liquibase futureRollbackSQL > rollback-1_0-3_0.sql

アプローチ 2: dbunit を使用してデータセットを保存する

データベース管理用のもう 1 つの非常に便利なツールはdbunit です。

次の記事では、liquibase と dbunit を一緒に使用してデータベースを移行する方法について説明しています。

2 つのツールは補完的です。あなたの場合、おそらく開発データのスナップショットを定期的に保存し、これを使用して開発またはテストデータベースを再作成できます(明らかに、データセットはデータベーススキーマのバージョンに敏感であるため、注意が必要です)

于 2012-12-08T09:34:41.163 に答える