रेक डीबी का उपयोग करके सिर्फ एक कदम कैसे रोलबैक करें: माइग्रेट करें


197

db/migrateफ़ोल्डर में माइग्रेशन फ़ाइलों को जोड़ने और चलाने के बाद rake db:migrate, मैं पिछले चरण पर वापस जाना चाहता हूं, मुझे लगता है कि उपयोग करना VERSION=nऐसा करने का सही तरीका है, लेकिन मुझे उपयोग करने के लिए n का सही मूल्य नहीं पता है। क्या वर्तमान n मान की जांच करने के लिए कोई कमांड है?

यह बहुत अच्छा होगा अगर कोई भी उपयोग करने के बारे में पूर्ण निर्देश प्रदान कर सके rake db:migrate

जवाबों:


357

शुरुआत के लिए

rake db:rollback आपको एक कदम पीछे ले जाएगा

फिर

rake db:rollback STEP=n

क्या आप उन बैकग्राउंड को रोल-अप करेंगे nजहां nहाल ही में आपके द्वारा रोलबैक करने के लिए माइग्रेशन की संख्या है।

अधिक संदर्भ यहाँ


95

सबसे हालिया प्रवास को वापस लें:

rake db:rollback

nसबसे हाल के पलायन को वापस रोल करें :

rake db:rollback STEP=n

आप रनिंग माइग्रेशन के लिए रेल्स गाइड पर रेक माइग्रेशन कार्यों के उपयोग के बारे में पूर्ण निर्देश पा सकते हैं ।


यहाँ कुछ और है:

  • rake db:migrate - वे सभी माइग्रेशन चलाएं जो पहले से नहीं चलाए गए हैं
  • rake db:migrate VERSION=20080906120000 - दिए गए संस्करण में जाने के लिए सभी आवश्यक माइग्रेशन (ऊपर या नीचे) चलाएँ
  • rake db:migrate RAILS_ENV=test - दिए गए वातावरण में माइग्रेशन चलाएं
  • rake db:migrate:redo - एक माइग्रेशन वापस रोल करें और इसे फिर से चलाएं
  • rake db:migrate:redo STEP=n- पिछले nमाइग्रेशन को वापस रोल करें और उन्हें फिर से चलाएं
  • rake db:migrate:up VERSION=20080906120000- upदिए गए माइग्रेशन के लिए विधि चलाएँ
  • rake db:migrate:down VERSION=20080906120000- downदिए गए माइग्रेशन के लिए विधि चलाएँ

और आपके प्रश्न का उत्तर देने के लिए कि आपको माइग्रेशन का संस्करण नंबर कहाँ से प्राप्त होता है:

संस्करण माइग्रेशन के फ़ाइल नाम पर संख्यात्मक उपसर्ग है। उदाहरण के लिए, 20080906120000 संस्करण चलाने के लिए माइग्रेट करें

$ rake db:migrate VERSION=20080906120000

( रेलिंग गाइड में रनिंग माइग्रेशन से )


2
जब रेक डीबी: रोलबैक सबसे हालिया माइग्रेशन को रोलबैक करने के लिए काम नहीं कर रहा था, तो मुझे रेक डीबी का उपयोग करना पड़ा: माइग्रेट संस्करण = <दूसरा अंतिम संस्करण दिनांक> और यह ठीक काम किया
ओमनी

8

सबसे अच्छा तरीका नीचे या ऊपर का उपयोग करके फिर से विशेष रूप से माइग्रेशन चला रहा है (रेल में 4. यह परिवर्तन है)

रेल्स डीबी: माइग्रेट: अप वर्सन = टाइमस्टैम्प

अब आप टाइमस्टैम्प कैसे प्राप्त करें। इस रास्ते पर जाओ

/ Db / विस्थापित

उस माइग्रेशन फ़ाइल को पहचानें, जिसे आप उस फ़ाइल के नाम से टाइमस्टैम्प पर वापस लाना चाहते हैं।


हालांकि यह सवाल का जवाब नहीं देता है, यह वास्तव में सबसे अच्छा तरीका है। कदम से पीछे हटने से गलती हो सकती है, खासकर जब किसी समूह में सॉफ़्टवेयर पर काम कर रहे हों।
स्टील

5

यदि संस्करण है 20150616132425, तो उपयोग करें:

rails db:migrate:down VERSION=20150616132425

1

अन्य लोगों ने आपको पहले ही जवाब दे दिया है कि कैसे रोलबैक किया जाए, लेकिन आपने यह भी पूछा कि आप किसी माइग्रेशन के वर्जन नंबर की पहचान कैसे कर सकते हैं।

  • rake db:migrate:status आपके माइग्रेशन संस्करण, नाम और स्थिति (ऊपर या नीचे) की एक सूची देता है
  • आप माइग्रेशन फ़ाइल भी पा सकते हैं, जिसमें फ़ाइल नाम में टाइमस्टैम्प है, वह संस्करण संख्या है। माइग्रेशन फ़ोल्डर में स्थित हैं:/db/migrate

वैसे यदि आप स्टेटस कमांड चलाते हैं, तो आपको लाइनें दिखाई दे सकती हैं जैसे: ********** NO FILE ********** यदि आप उपयोग करते हैं तो वे माइग्रेशन आपकी वर्तमान शाखा पर मौजूद नहीं हैं Git।
ब्रजनेद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.