2011-01-31 5 views
5

私たちはしばらくの間、Grailsので取り組んできましたし、私のチームリーダーは、GrailsのORM(GORM)に関するいくつかの質問を提起:Grailsでデータベーススキーマを移行/更新するにはどうすればよいですか?

  1. 我々は生産に移動した後、我々はデータベーススキーマを維持するにはどうすればよいですか?
  2. Grailsでデータベーススキーマを更新できますか?
  3. スキーマが更新された場合、変更は自動的に反映されるか、フレームワークはこれを処理しますか?
  4. 頭痛のないスキーマを更新できるようにするGrailsのプラグインはありますか?

答えて

10

私は最近、データベースの移行のための公式のGrailsプラグインリリース - http://grails-plugins.github.com/grails-database-migration/docs/manual/index.html

http://grails.org/plugin/database-migrationやドキュメントを参照し、私はこの上LiquiBaseをの著者で働いているので、古いLiquiBaseをプラグインが廃止され、最新バージョンのLiquibase(2.0)を使用し、SpringSourceによって正式にサポートされているので、新しいものを使用する必要があります。彼の発表についてはhttp://blog.liquibase.org/2011/01/new-standard-liquibase-plugin-grails-database-migration.htmlを参照してください。

http://grails-plugins.847840.n3.nabble.com/で(http://grails.org/Mailing+listsからサインアップ)または新しいプラグインフォーラムGrailsのユーザーメーリングリストに使用方法の質問をするか、直接作者に電子メールを送り:)

+0

新しいDBプラグインは間違いなく最適なオプションです – leebutts

1

「自動作成」機能はプロジェクトを稼働させるのに問題ありませんが、liquibaseは最新の状態に保つ最良の方法です。 grails pluginがあり、DSLでも作業が進んでいると思います。

したがって、ベースラインのスキーマ(liquibaseのgenerate-changelogを使用することができます)を作成し、liquibaseによって将来のすべての変更を行い、更新、ロールバック、さらにはdb interopを管理します。

environments { 
    development { 
     dataSource { 
      dbCreate = "validate" 

あなたはまた、アプリケーションの起動時に、あなたの移行を実行するためにliquibase-runner pluginに興味がある可能性があり:あなたが確認し、スキーマがドメインの設定と一致しない場合にGrailsは起動しませんあなたのDataSource.groovy設定を設定することができます。

+1

私が今バートのDBプラグインを試してみたし、それははるかにましだ - ということを使用! –

4
  1. 本番環境用DataSource.groovydbCreateパラメータを削除する - これは、自動更新のDBスキーマからGORMを停止します。

  2. 確かに。 LiquiBase pluginを使用してください。

  3. GORMはdbCreate='update'で行うことができますが、強くお勧めしません。たとえば、フィールドの名前を変更すると、GORM/LiquiBaseはdrop + createだけでなく、データを移行する必要があると決して判断できません。

  4. LiquiBaseのchangelog.xmlおよびgrails migrate -Dgrails.env=<whatever environment>を生成してそれぞれのdbサーバーに適用するために、1行に:grails db-diff

関連する問題