0

データベース移行プラグインを使用して、DB の変更を制御しています。このチュートリアルに従って、ステップバイステップでプロジェクトに適用しました。「dbm-gorm-diff」コマンド以外はすべて問題ないようです。

まず、「grails dbm-generate-gorm-changelog changelog.groovy」コマンドを使用して、DB のスナップショットを作成しました。次に、テーブル (Person テーブルと呼ばれ、もう 1 つのプロパティを追加) を変更して、「dbm-gorm-diff」コマンドを実行しようとしました。しかし、受け取った差分ファイルが大きすぎます。これは、私の DB のまったく新しい完全なスナップショットです (新しく追加された列を含む)! そのファイルは、以前の状態と比較して DB で実際に変更されたものだけを示しているだけだと思っていました。

それで、それは間違っていますか?期待どおりに動作させるにはどうすればよいですか (それが diff ファイルを生成する正しい方法だと思います)。これを解決するのを手伝ってもらえますか? どうもありがとう。

P/S: 「dbm-gorm-diff」コマンドの実行時にエラーが発生したため、この修正を適用 しましたhttps://github.com/ph4t/grails-database-migration/commit/68fff38397157740ee4d993c8bb67811a0f021bb
をデータベースに適用しました-移行プラグイン。問題なく動作しますが、奇妙な差分ファイルが表示されます。

4

2 に答える 2

0

問題が正しく理解できていれば、手順が順不同で実行されている可能性があります。dbm-generate-gorm-changelog は、ドメイン オブジェクトをデータベースと比較し、最初の変更ログを作成します。変更を適用せずに dbm-gorm-diff を実行すると、表示されているものと本質的に同じ変更ログが生成されます。あなたが望むライフサイクルは...

1) GORM オブジェクトを作成します。2) dbm-generate-gorm-changelog を実行します 3) dbm-update を実行して、データベース スキーマ オブジェクトを作成します

次に、ドメイン オブジェクトに変更を加えて繰り返します。

1) GORM オブジェクトを変更します 2) dbm-gorm-diff [ファイル名].xml を実行します -add 3) dbm-update を実行します 4) 必要に応じて繰り返します。

実際に空のデータベースから始めていない場合は、目的地にたどり着くためのさまざまなターゲットがあり、ライフサイクルは少し異なります。

詳細については、http: //grails-plugins.github.io/grails-database-migration/docs/manual/guide/index.htmlを参照してください。

于 2014-01-21T21:14:36.690 に答える
0

私があなただったら、人のクラスを更新した後に他の変更を削除します:

私の最初のchanglog.grovvyがそこにあるとすれば、たとえば、移行スクリプトがあなたのperson-update-changelog.groovyに書き込む他のすべてを削除します。

列の変更はそのままにしておいてください。のような列サイズの更新は奇妙です

       varchar(20) to varchar(25) in database ,and 

       String Name

       name(maxlenght:25)  //this a change

更新用に生成されない場合があります。私は簡単に追加します

        sql('Alter table column ...')

データベースの変更を反映するため、理解できない生成されたコードを削除し、行った変更を維持します。

于 2013-08-30T05:46:53.073 に答える