2013-06-07 6 views
5

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

मैं फिर से कर फिर से तो मैं यह सब गिरा डेटाबेस था। मैं rails g scaffold किया 6 नए मॉडल और नियंत्रकों उत्पन्न करने के लिए और rake db:migrate

किया मेरी /db/migrate निर्देशिका में मैं फ़ाइल नाम 20130603211907_devise_create_users.rb

यहाँ के साथ चिंतन करना फ़ाइल है मुद्दा है: यदि मैं rake db:migrate:down VERSION=20130603211907 करना यह सब नया माइग्रेशन को नष्ट करेगा ।

कैसे सभी नए माइग्रेशन हटाए बिना, मैं एक फिर से माइग्रेशन चला सकता हूँ?

+0

मैं 'कोशिश करने के लिए रेक db जा रहा हूँ: migrate' विस्थापित पर टाइमस्टैम्प परिवर्तित करने के बाद और देखो क्या होता। – Kush

उत्तर

6

आप स्थानीय रूप से विकसित कर रहे हैं और इसे अपने मॉडल से सभी डेटा को हटाने के लिए चोट नहीं हैं, तो आप कर सकते थे बस drop अपने डाटाबेस और फिर create & खरोंच से migrate:

Purge or recreate a Ruby on Rails database

20

rake db:migrate:redo VERSION=xxxxxxx

यह नीचे और फिर कदम चलेंगे। आप अस्थायी रूप से नीचे चरण को टिप्पणी करने के साथ संयोजन के रूप में ऐसा कर सकते हैं।

+4

संस्करणों की एक सूची प्राप्त करने के लिए: 'रेक डीबी: माइग्रेट: स्थिति'। – Adobe

2
rake db:migrate:up VERSION=20090408054532 

इस वसीयत VERSION = 20090408054532

चेकआउट Run a single migration file

तक सभी फ़ाइल माइग्रेट करें
5

हर किसी की मदद के लिए धन्यवाद। यह वही मेरे लिए काम किया है:

चेतावनी: इन आदेशों अपने डेटाबेस में सभी डेटा हटा देगा!

rake db:drop 
rake db:create 
rake db:migrate 
+3

जवाब यह है कि समाधान अपने खुद के जवाब में दूसरी बार शामिल है, के बजाय आप के लिए काम किया स्वीकार करने पर विचार;) –

+1

haha ​​करेंगे :) – Kush

0

आप rake db:migrate:redo VERSION=20130603211907 कॉल कर सकते हैं जो निर्दिष्ट संस्करण को फिर से चलाएं होगा।

इसके अलावा, अगर आप माइग्रेशन कि केवल चलाना चाहिए माइग्रेशन श्रृंखला जा रहा है (उदाहरण के लिए डेटा परिवर्तन, प्रतिलिपि, आदि), आप एक

def up 
    do_something 
end 

और डीईएफ़ नीचे निर्दिष्ट कर सकते हैं (नीचे जा रहा) , क्रमशः परिवर्तन परिवर्तन (दोनों तरीकों) विधि।

अस्थायी रूप से माइग्रेशन अक्षम करने के लिए, उदाहरण के लिए, विधि def up से def up_ का नाम बदलें और माइग्रेशन श्रृंखला को संसाधित करते समय इसे अनदेखा कर दिया जाएगा।

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