2010-02-10 16 views
10

तो यह रेल परियोजना पर मेरी पहली असली रूबी है। मैंने अपना सबक सीखा है - मैंने माइग्रेशन का उपयोग करके सभी बदलाव नहीं किए हैं, इसलिए चीजें थोड़ा गड़बड़ हो गई हैं।नए माइग्रेशन शुरू करने और पुनर्निर्माण/पुनर्निर्माण के लिए रोलबैक कैसे करें

नई माइग्रेशन फ़ाइलों के साथ शुरू करने और स्कीमा का पुनर्निर्माण करने का सबसे अच्छा तरीका क्या है? मेरी परियोजना पूरी परियोजना के पुनर्निर्माण के साथ बहुत दूर है, लेकिन जहां तक ​​मैं माइग्रेशन खोने की परवाह करता हूं, वहां तक ​​बहुत दूर नहीं है। मुझे डेटाबेस में डेटा खोने पर भी कोई फर्क नहीं पड़ता। मैं शुरुआत में रोलबैक करने की कोशिश कर रहा था लेकिन इसमें से कुछ असफल रहा है।

मुझे पता है कि यह एक बुरी स्थिति है, लेकिन सबक सीखा है।

संपादित करें: मैं सिर्फ सभी माइग्रेशन फ़ाइलें हटा दी और डाटाबेस के साथ स्कीमा फ़ाइल पुनर्निर्माण: स्कीमा: डंप। मुझे लगता है कि यह मुझे अपने मौजूदा डेटाबेस के साथ एक स्वच्छ स्थिति में रखता है, बस माइग्रेशन खो गया है।

उत्तर

5

आपका schema.rb फ़ाइल अपने डेटाबेस से वास्तविक स्कीमा शामिल करना चाहिए। आप माइग्रेशन बनाने के लिए इसे शुरुआती बिंदु के रूप में उपयोग कर सकते हैं। पुरानी तालिका को ओवरराइट करने के लिए आप प्रत्येक तालिका के लिए :force => true पैरामीटर के साथ एक नया माइग्रेशन बना सकते हैं। इसके बाद आप पुराने माइग्रेशन को हटा सकते हैं (आपको शायद schema_migrations तालिका से अपनी प्रविष्टियों को हटाने की भी आवश्यकता होगी)।

अन्य विकल्प आपके वर्तमान स्कीमा से मेल खाने के लिए पुराने माइग्रेशन को अपडेट कर रहे हैं।

+0

धन्यवाद - मैंने अभी माइग्रेशन हटा दिए हैं, schema_migrations खाली कर दिया है टेबल, फिर 'रेक डीबी: रीसेट' भाग गया। मेरी स्कीमा पूरी तरह से अद्यतित नहीं थी इसलिए मुझे उसके बाद डीबी में कुछ बदलाव करना पड़ा। अगर मुझे यह फिर से करना है तो मैं वही काम करता हूं लेकिन डीबी की वर्तमान स्थिति से स्कीमा फ़ाइल को फिर से बनाने का कोई तरीका है या नहीं। – 99miles

7

आप डेटा को खोने के बारे में चिंतित नहीं हैं तो कर

rake db:purge 

यह सिर्फ अपने डेटाबेस ड्रॉप चाहिए

+9

यह रेक डीबी में बदल गया है: रेल 3 में गिरावट (रेक डीबी: ड्रॉप: सभी वातावरण के लिए ड्रॉप करने के लिए सभी) – jvatic

+0

रेक डीबी: रीसेट अधिक है – montrealmike

9

यदि आप कुछ कदम स्थानांतरित करना चाहते हैं वापस आप

rake db:rollback STEP=2 

कि कमान अपने डेटाबेस 2 माइग्रेशन वापस विस्थापित करेगा कर सकते हैं। आप रेक आदेशों के साथ और अधिक मदद की, जूस प्रकार

rake -T 

सभी कार्य आप आप आवेदन में की सूची प्रदान करेगा आदेश की जरूरत है।

+0

यह उन सभी आदेशों को सूचीबद्ध करता है जिनमें वर्णन है। – Timo

संबंधित मुद्दे