2011-05-09 31 views
1

我有一個帶有字符串字段的域類,我將其更改爲可空。在DataSource.groovy中,我將模式設置爲「更新」。有沒有辦法讓Grails改變MySql而不改變爲「create」或「create-drop」。我需要MySql中的數據。後續問題:我可以用「ALTER TABLE myProject_my_domain_class MODIFY the_string varchar(20)NULL」這一行進行更改:「這是可接受的做法嗎?另外我有一個字段鏈接到另一個領域類相同的問題:在grails中,需要將域類中的字段更改爲可空,因爲我已經投入生產

class myDomainClass { 
    MyOtherDomainClass otherThing 
} 

更改爲

class myDomainClass { 
    MyOtherDomainClass otherThing 
    static constraints = { 
    otherThing(nullable:true) 
    } 
} 

如果手動SQL ALTER是唯一的出路,什麼是寫SQL的正確方法命令,以便保留域類之間的密鑰索引?

+0

看來,如果我只是做「ALTER TABLE myProejct_my_domain_class MODIFY other_thing_id bigint(20)NULL;」什麼都沒有打破仍然想知道我是否使用Datasource.groovy錯誤或其他n00bsauce答案。 – Mikey 2011-05-09 20:41:21

回答

2

您是否嘗試過數據庫遷移插件?

http://www.grails.org/plugin/database-migration

使用它的過程不僅僅是設置的dbCreate =「更新」更多的手動了一下,但它給你更大的控制權,並像讓某個列可爲空變化回升。此外,您甚至可以將小模式更改檢入您的版本控制系統,以便記錄您所做的更改。

+0

是否有教程或其他內容,即使對於Grails wiki,該頁面上的文檔似乎也有點稀疏...... – Mikey 2011-05-09 22:40:00

+1

嘗試http://grails-plugins.github.com/grails-database-migration/docs/manual/index html的 – 2011-05-09 23:07:47

相關問題