2013-05-26 18 views
20

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

मैं इस के लिए प्रवास फ़ाइल संपादित किया है:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :email 
     t.string :encrypted_password 
     t.string :salt 
     t.timestamps 
    end 
    end 
end 

तो जब मैं चला चुके 'रेक db: विस्थापित' के बाद मैं करने वाला हूँ मैं एक त्रुटि

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` ... 

मिला रन 'रेक db: बनाने' है, तो हो रही इस

user_auth_development already exists 
user_auth_test already exists 
+0

मैं db चलाने की जरूरत है के लिए आवश्यकता होती है क्या करेंगे? या माइग्रेट फ़ाइल संपादित करने के बाद यह अल्रे सेटअप है? –

+0

इसका मतलब है कि तालिका पहले से मौजूद है। पिछले माइग्रेशन पहले से ही बनाया जा सकता है। –

उत्तर

43

आप rake db:create एक बार और केवल एक बार चलाने im, और आप इसे एफआईआर चलाने टी। फिर जब भी आप माइग्रेशन जोड़ते/बदलते हैं तो आप rake db:migrate चलाते हैं। आप या तो पहले ही इस माइग्रेशन को चला चुके हैं, या आप ऐसे डेटाबेस पर इशारा कर रहे हैं जो पहले से मौजूद है और पहले से ही users नाम की एक तालिका है। मेरा अनुमान है कि आप पहले से ही माइग्रेशन चला चुके हैं, इस मामले में आप शायद जाने के लिए अच्छे हैं। यदि आप डीबी को नाक करना चाहते हैं और शुरू करना चाहते हैं, तो rake db:drop db:create db:migrate करें। बना सकते हैं और db: विस्थापित

+0

धन्यवाद! यह हल हो गया। –

+0

बहुत बहुत धन्यवाद! मुझे नहीं पता कि वे गाइड में इसे क्यों कवर नहीं करते हैं। न तो यह समझाता है कि माइग्रेशन को सही तरीके से अपडेट करने के बारे में आप वास्तव में कैसे जाते हैं। जब मैं माइग्रेट फ़ाइल को अद्यतन करता हूं और 'रेक डीबी: माइग्रेट' चलाता हूं तो कुछ भी नहीं होता है। मुझे पता है कि मैं कुछ गलत कर रहा हूं, लेकिन मुझे नहीं पता कि मुझे क्या करना चाहिए। क्या मुझे माइग्रेशन को नया नाम या कुछ देना है? – Nathan

+0

आम तौर पर बोलते हुए, आपको माइग्रेशन फ़ाइल को संशोधित नहीं करना चाहिए। यदि आप वास्तव में जानते हैं कि आप क्या कर रहे हैं, तो आपको पता चलेगा कि यह कब स्वीकार्य है। यदि आपको कोई संदेह है, तो संशोधित न करें; इसके बजाय, एक नई माइग्रेशन फ़ाइल बनाएं ('रेल माइग्रेशन उत्पन्न करें')। इसके लिए एक मामूली अपवाद है: यदि आप सबसे हालिया माइग्रेशन को संशोधित करना चाहते हैं, तो आप ऐसा कर सकते हैं, और फिर 'रेक डीबी: माइग्रेट: रेडो' चलाएं, जो अंतिम माइग्रेशन को छोड़ देगा और फिर से चालू करेगा। यह हमेशा संभव नहीं है; यह पिछले प्रवासन पर निर्भर करता है (सभी नहीं हैं)। यदि आप इसे किसी साझा भंडार में पहले से ही कर चुके हैं तो आपको यह नहीं करना चाहिए। –

15

हम तो बस दे सकते हैं, यह सब रेक कार्य जो डेटाबेस निर्माण और प्रवास

rake db:setup

+0

यह मेरे लिए काम नहीं करता है ... यह कहता है कि स्कीमा फ़ाइल अभी तक मौजूद नहीं है ... –

+0

काफी जानकारी के उस साधारण टुकड़े की तलाश में है ... इसे आसानी से ढूंढने के लिए बहुत छोटा था। यह मॉडल से डेटाबेस उत्पन्न करेगा। – nembleton

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