目標 - 1 回の展開/再起動で、新しいテーブルを作成し、いくつかのレコードを入力したいと考えています。これは、このデータがそこにあることを期待するコードの変更があるためです。
理想は、これを実現する移行を作成することです。クラスを作成し、 でテーブルをFoo
作成する移行を生成し、 で移行を実行したとします。これで、ドメイン クラスとデータベース テーブルの両方ができました。涼しい。foo
grails dbm-gorm-diff ....
grails dbm-update
ここで、テーブルにデータを入力する新しい移行を作成します。
databaseChangeLog = {
changeSet(author: "samslotsky", id: "PopulateFooTable") {
grailsChange {
change {
new Foo(bar: 'baz').save()
new Foo(bar: 'blitz').save()
}
}
}
}
それを changelog.groovy に追加します
include file: 'populate-foo-table.groovy'
再度実行した後、テーブルgrails dbm-update
にレコードがありません。アプリケーション コードから問題なくオブジェクトfoo
を作成できるため、これは検証の問題ではありません。Foo
移行内でブレークポイントがキャッチされないように見えるため、移行が実行されたかどうかを確認する方法さえわかりません。
したがって、次の 2 つの質問をするのがよいと思います。
- 副次的な影響 (つまり、db テーブルに値が入力される) を探す以外に、移行が実行されたことを確認するにはどうすればよいですか?
- 移行から新しいレコードを作成するにはどうすればよいですか? Groovy コードを使用できますか? それとも SQL の記述に行き詰まっていますか?
最初にテーブルとドメイン クラスを作成して展開し、インポート ツールまたは管理インターフェイスを作成してデータをシードし、コードを変更してデータを使用できることに気付きました。私は本当にそのすべてを経験したくありません。これは、Rails の場合と同様に、1 回のデプロイでシームレスに実行できるはずです。
ありがとう!