जवाबों:
यदि आप rake -T
इसे चलाते हैं, तो यह आपके रेल परियोजना के लिए सभी संभावित रेक कार्यों को सूचीबद्ध करेगा। उनमें से एक डीबी है: स्कीमा: डंप जो डेटाबेस से रेल एप्लिकेशन के लिए स्कीमा.बीआर को फिर से बनाएगा।
bundle exec rake db:schema:dump
rake db:schema:dump
2.0 रेल पर
सावधान,
rake db:schema:dump
DB से वर्तमान DB स्कीमा डंप करेगा । इसका मतलब यह है कि यदि आपने अपने माइग्रेशन में कोई बदलाव किया है, तो वे स्कीमा.आरबी फ़ाइल में नहीं दिखाई देंगे, जो कि आप आईएमओ नहीं चाहते हैं।
यदि आप माइग्रेशन से स्कीमा को फिर से बनाना चाहते हैं, तो निम्न कार्य करें:
rake db:drop # ERASES THE DATABASE !!!!
rake db:create
rake db:migrate
rake db:schema:dump
कमांड चलाएँ।
5 तरीके:
rails db:schema:dump
या यदि आप मणि का सामना करते हैं :: LoadError तो:
bundle exec rails db:schema:dump
ध्यान दें:
रेल में 5 यह अनुशंसा की जाती है कि rails
इसके बजाय का उपयोग करके कार्य उत्पन्न / निष्पादित किया जाता है rake
, यह सिर्फ याद रखने के लिए है, रेल उत्पन्न कार्य विस्तार .rake
में हैं lib/tasks/myTask.rake
। जिसका अर्थ है कि इन कार्यों को पूर्व निर्धारित करके भी निष्पादित किया जा सकता है rake
।
यदि आप schema.rb
स्थानीय रूप से पुन: निर्माण करते हैं , तो आपको ठीक होना चाहिए। यह केवल आपके डेटाबेस तालिकाओं की संरचना का प्रतिनिधित्व करता है। डेटा ही इस फ़ाइल में समाहित नहीं है।
अपनी schema.rb
फ़ाइल पुन : बनाने के लिए, दौड़ें:
bundle exec rake db:schema:dump
तो बस नई schema.rb
फ़ाइल को कमिट करें और आपको अच्छे आकार में होना चाहिए!
सीधे schema.rb फ़ाइल से ही:
यदि आपको किसी अन्य सिस्टम पर एप्लिकेशन डेटाबेस बनाने की आवश्यकता है, तो आपको उपयोग करना चाहिए
db:schema:load
, खरोंच से सभी माइग्रेशन नहीं चलाना। उत्तरार्द्ध एक त्रुटिपूर्ण और निरंतर दृष्टिकोण है (आप जितना अधिक माइग्रेशन करेंगे, आप उतने धीमे चलेंगे और मुद्दों की अधिक संभावना होगी)।
तो उस सुझाव का मत करो rake db:migrate
, जो इस लेखन के समय में - सबसे कम मूल्यांकित उत्तर में सुझाया गया था।
मुझे भी इसी तरह की समस्या थी जहां मेरा पुराना स्कीमा माइग्रेशन डिलीट करने पर भी ताज़ा नहीं था।
इसलिए, मैंने जो कुछ किया, वह डेटाबेस में मौजूद सभी तालिकाओं को छोड़ रहा था और उन्हें फिर से स्थानांतरित कर रहा था। फिर "डीबी: स्कीमा: लोड" कमांड चलाने से मुझे एक नया स्कीमा मिला। आरआरबी।
drop table my_table_name // deleted them individually
rake db:migrate
rake db:schema:dump // re-created a new schema