2011-06-02 30 views
5

你可以給我一個使用modifyDataType方法的groovy變更集的例子嗎?如何使用Grails的數據庫遷移插件的Groovy DSL修改列?

我嘗試這樣做:

databaseChangeLog = { 
    changeSet(author: "user", id: "5-1") { 
     modifyDataType(tableName: "test", columnName: "description4", newDataType: "int(11)") 
    } 
} 

modifyDataType無法識別。我也試過modifyColumn,但我得到了同樣的結果。

潛在的問題是:dsl支持哪些類型的標籤,以及它們是如何使用的?

+0

因爲插件仍處於開發階段(當前版本0.2.1),該文件可能是沒有完全支持,因爲這將是一次插件達到1.0 。我原以爲它會支持任何[liquibase重構](http://www.liquibase.org/manual/home),但鑑於你的經驗,顯然不是?您可以隨時嘗試[打開JIRA問題](http://jira.grails.org/secure/Dashboard.jspa),查看它是否可以添加到文檔中。 – 2011-06-02 22:13:06

+0

此外,FWIW,更改域屬性的名稱並運行'dbm-gorm-diff file.groovy',將使用「dropColumn」和「addColumn」創建更改集,而不是使用修改。列重命名/修改可能在路線圖上。您可以編寫自己的自定義更改集以在短期內遷移數據。 – 2011-06-02 22:20:38

+0

儘管插件僅在v0.2.1,但它非常穩定,實際上是1.0版本候選版本。在官方1.0之前有幾個我想要修復的開放性問題,當然它需要更多的文檔,但否則它基本上是功能完整的。 – 2011-06-02 23:25:11

回答

9

所有Liquibase重構都應該工作 - Groovy DSL鏡像Liquibase XML。我沒有對modifyDataType進行測試,但將其添加到了我的測試腳本中,並且工作正常 - 請參閱https://github.com/grails-plugins/grails-database-migration/blob/master/testapp/price.changelog.groovy

如果能夠顯示有關其失敗原因的信息,找出錯誤是非常有用的。

+2

它現在指向404 ... – Philippe 2015-10-26 20:09:17

+0

Master現在是Grails 3插件,顯然測試應用程序已移動(我沒有在Grails 3更新上工作)。但舊版插件位於「1.x」分支,引用文件爲[here](https://github.com/grails-plugins/grails-database-migration/blob/1.x/testapp/price .changelog.groovy) – 2015-10-26 20:24:58

0

它會像這樣:

databaseChangeLog = { 

    changeSet(author: "test (generated)", id: "1422541392309-2") { 
    comment { 'Rename tabTitle to tabName' } 
    renameColumn(tableName: "user", oldColumnName: "tab_title", newColumnName: "tab_name", columnDataType: "varchar(255)") 
    } 
} 
相關問題