2011-06-02 9 views
5

क्या आप मुझे modifyDataType विधि का उपयोग कर एक ग्रोवी बदलाव का उदाहरण दे सकते हैं?Grails 'डेटाबेस माइग्रेशन प्लगइन के ग्रोवी डीएसएल का उपयोग करके मैं कॉलम को कैसे संशोधित करूं?

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

लेकिन modifyDataType मान्यता प्राप्त नहीं है:

मैं इस कोशिश की। मैंने modifyColumn भी कोशिश की, लेकिन मुझे एक ही परिणाम मिल गया।

अंतर्निहित प्रश्न यह है कि: डीएसएल समर्थन किस प्रकार के टैग करता है, और उनका उपयोग कैसे किया जाता है?

+0

के बाद से प्लगइन विकास (वर्तमान संस्करण 0.2.1) के तहत अब भी है, प्रलेखन शायद नहीं के रूप में पूरा हो गया है के रूप में यह एक बार प्लगइन v1.0 तक पहुँच जाता हो जाएगा । मैंने सोचा होगा कि यह किसी भी [तरल पदार्थ रिफैक्टरिंग] (http://www.liquibase.org/manual/home) का समर्थन करेगा, लेकिन आपके अनुभव को स्पष्ट रूप से नहीं दिया गया है? आप हमेशा यह देखने के लिए [JIRA समस्या खोलना] (http://jira.grails.org/secure/Dashboard.jspa) देख सकते हैं कि यह दस्तावेज़ में जोड़ा जा सकता है या नहीं। –

+0

इसके अलावा, FWIW, डोमेन प्रॉपर्टी का नाम बदल रहा है और 'dbm-gorm-diff file.groovy' चल रहा है' संशोधित करने के बजाय 'ड्रॉप कॉलम' और 'एडकॉलम' के साथ परिवर्तन बनाता है। शायद कॉलम नामकरण/संशोधन रोडमैप पर है। आप अल्प अवधि में डेटा माइग्रेट करने के लिए शायद अपना खुद का कस्टम परिवर्तन लिख सकते हैं। –

+0

हालांकि प्लगइन केवल v0.2.1 पर है, यह बहुत स्थिर है और प्रभावी रूप से एक 1.0 रिलीज उम्मीदवार है। कुछ खुले मुद्दे हैं जिन्हें मैं आधिकारिक 1.0 से पहले ठीक करना चाहता हूं और निश्चित रूप से इसे अधिक दस्तावेज की आवश्यकता है, लेकिन अन्यथा यह मूल रूप से सुविधा पूर्ण है। –

उत्तर

9

सभी लिक्विबेस रिफैक्टरिंग कार्य करना चाहिए - ग्रोवी डीएसएल लिक्विबेस एक्सएमएल को दर्पण करता है। मेरे पास संशोधित डेटाटाइप के लिए कोई परीक्षण नहीं था, लेकिन इसे मेरी टेस्ट स्क्रिप्ट में जोड़ा गया और यह ठीक काम करता है - https://github.com/grails-plugins/grails-database-migration/blob/master/testapp/price.changelog.groovy

यह पता लगाना उपयोगी होगा कि क्या यह गलत है अगर आप कुछ विफलताओं के बारे में कुछ जानकारी दिखा सकते हैं।

+2

यह अब 404 को इंगित करता है ... – Philippe

+0

मास्टर अब Grails 3 प्लगइन है, और स्पष्ट रूप से परीक्षण ऐप स्थानांतरित किया गया था (मैंने Grails 3 अपडेट पर काम नहीं किया)। लेकिन पुरानी प्लगइन "1.x" शाखा में है, और संदर्भित फ़ाइल [यहां] है (https://github.com/grails-plugins/grails-database-migration/blob/1.x/testapp/price .changelog.groovy) –

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)") 
    } 
}