3

という名前のフィールドを持つ grails ドメインがありましたが、created今は に変更しましたdateCreated。ただし、私のデータベーステーブルにはまだ名前の付いた列があるcreatedため、レコードを保存しようとするとField 'created' doesn't have a default value、ドメインにこのフィールドがなくなったにもかかわらず、grails が文句を言います。

この問題をどのように回避しますか? データベースを開いてこの列を削除する必要がありますか? Rails では、これはマイグレーションによって処理されますが、grails ではこれに相当するものは何ですか?

4

2 に答える 2

4

ドメイン フィールドの名前を変更するだけの場合は、マッピング ブロックで列名を指定でき、関連フィールドの名前を変更するときに列名を変更する必要はありません。したがって、DB の変更はまったく必要ありません。

class MyDomain {
    Date dateCreated
    static mapping = {
        dateCreated column: 'created'
    }
}
于 2013-01-06T19:05:02.130 に答える
1

dbCreate = "update"DataSource.groovy で指定する必要があります。

開発段階にある場合は、dbCreate = "create"スキーマの自動更新を有効にするように変更できます。それ以外の場合、実稼働環境では、その構成を維持し、テーブルを手動で変更する必要があります。

いくつかの移行ツールも提案しているGrails DataSource docを参照してください。

dbCreate 設定を完全に削除することもできます。これは、スキーマが比較的安定しており、アプリケーションとデータベースが運用環境にデプロイされている場合に確実に行うことをお勧めします。その後、データベースの変更は、SQL スクリプトまたは Liquibase などの移行ツールを使用して、適切な移行を通じて管理されます (データベース移行プラグインは Liquibase を使用し、Grails および GORM と緊密に統合されています)。

于 2013-01-06T18:37:53.557 に答える