我們一直在使用Grails了一段時間,我的團隊負責人提出了關於Grails的ORM(GORM)一些問題:我們如何在Grails中遷移/更新數據庫模式?
- 我們如何保持數據庫模式,一旦我們已經轉移到生產?
- 我們可以用Grails更新數據庫模式嗎?
- 如果模式已更新,更改是否會自動反映/框架是否處理此問題?
- 有沒有Grails的插件可以讓我們無需頭痛地更新模式?
我們一直在使用Grails了一段時間,我的團隊負責人提出了關於Grails的ORM(GORM)一些問題:我們如何在Grails中遷移/更新數據庫模式?
我最近發佈了數據庫遷移官方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。
問的Grails用戶郵件列表上(註冊從http://grails.org/Mailing+lists),或在http://grails-plugins.847840.n3.nabble.com/新插件論壇使用的問題,或直接發送電子郵件的作者:)
雖然「自動創建」功能可以讓項目啓動並運行,但我發現liquibase是保持db最新的最佳方式。有一個grails plugin,我相信DSL的工作也正在進行。因此,創建一個基線模式(您可以使用liquibase的generate-changelog),然後通過liquibase進行所有未來更改,它將管理更新,回滾以及甚至某些數據庫互操作。您可以設置DataSource.groovy中的配置,以驗證和Grails將無法啓動,如果方案不匹配域的配置:
environments {
development {
dataSource {
dbCreate = "validate"
您還可能有興趣在liquibase-runner plugin以在應用程序啓動運行遷移。
現在我已經試過伯特的數據庫插件,它的要好得多 - 使用! – 2011-02-01 20:49:28
爲您的生產環境中刪除DataSource.groovy
dbCreate
參數 - 這將自動更新數據庫架構停止GORM。
當然。使用LiquiBase plugin。
GORM可以用dbCreate='update'
來做,但強烈不建議。例如,如果您重命名一個字段,GORM/LiquiBase永遠不會確定您必須遷移數據,而不僅僅是刪除+創建。
在一行中:grails db-diff
生成LiquiBase的changelog.xml
和grails migrate -Dgrails.env=<whatever environment>
將其應用於各自的db服務器。
新的數據庫插件絕對是最好的選擇 – leebutts 2011-01-31 22:14:31