डेटाबेस को रीसेट करें (सभी को शुद्ध करें), फिर एक डेटाबेस को बीज दें


159

क्या डेटाबेस तालिकाओं में डेटा को मिटाने के लिए एक रेक कमांड है?

मैं अपनी तालिका में पूर्व-डेटा भरने के लिए एक db: बीज स्क्रिप्ट कैसे बनाऊं?

जवाबों:


278

मैं उपयोग rake db:resetकरता हूं जो ड्रॉप करता है और फिर डेटाबेस को फिर से बनाता है और इसमें आपकी सीड्रेसबीआर फाइल शामिल होती है। http://guides.rubyonrails.org/migrations.html#resetting-the-database


4
इस पर ध्यान दें: यदि उत्पादन में, तो आपको अपडेट करने के लिए / पृष्ठों को बदलने के लिए रेल सर्वर को पुनः आरंभ करना पड़ सकता है।
etusm

160

आप सब कुछ हटा सकते हैं और डेटाबेस + बीज दोनों को फिर से बना सकते हैं:

  1. rake db:reset: schema.rb से लोड होता है
  2. rake db:drop db:create db:migrate db:seed: पलायन से भार

सुनिश्चित करें कि आपके पास db (रेल सर्वर, एसक्यूएल क्लाइंट ..) से कोई संबंध नहीं है या डीबी ड्रॉप नहीं करेगा।

schema.rb आपके डेटाबेस की वर्तमान स्थिति का एक स्नैपशॉट है जिसे जनरेट किया गया है:

rake db:schema:dump

लोगों को यह सुनिश्चित करने के लिए धन्यवाद कि डीबी ठीक से गिराया जाए, यह सुनिश्चित करने के लिए किसी भी सर्वर को बंद कर दें।
aardvarkk

6

यदि आपको अपने डेटा को फिर से लोड करने के लिए पूरे शेलबैंग को छोड़ने और फिर से बनाने का मन नहीं है, तो आप डेटा को लोड करने से पहले एक तालिका को साफ करने के लिए seed.db फ़ाइल में उपयोग MyModel.destroy_all(या delete_all) कर सकते हैं MyModel.create!(...)। फिर, आप db:seedऑपरेशन को बार-बार बदल सकते हैं। (जाहिर है, यह केवल उन तालिकाओं को प्रभावित करता है जिन्हें आपने डेटा लोड किया है, उनमें से बाकी नहीं।)

Https://stackoverflow.com/a/14957893/4553442 पर "गंदा हैक" एक "डी-सीडिंग" ऑपरेशन को जोड़ने के लिए ऊपर और नीचे माइग्रेट करने के समान है ...


चतुर, खरोंच से सब कुछ फिर से बनाना मेरे लिए लंबे समय तक ले गया
m02ph3u5

5

रेल 5 के रूप में, rakeकमांडलाइन उपकरण के रूप में एलियास कर दिया गया है railsतो अब

rails db:reset के बजाय rake db:reset

साथ ही काम करेगा


0

rake db:resetजब आप स्थानीय डेटाबेस को गिराना चाहते हैं और जब आप लोड किए गए डेटा से नए सिरे से शुरू करना चाहते हैं तो आप इसका उपयोग कर सकते हैं db/seeds.rb। यह एक उपयोगी कमांड है जब आप अभी भी अपने स्कीमा का पता लगा रहे हैं, और अक्सर मौजूदा मॉडल में फ़ील्ड जोड़ने की आवश्यकता होती है।

एक बार रीसेट कमांड का उपयोग करने के बाद यह निम्न कार्य करेगा: डेटाबेस को छोड़ें: rake db:drop स्कीमा लोड करें: rake db:schema:load डेटा सीड करें:rake db:seed

लेकिन अगर आप अपने डेटाबेस को पूरी तरह से छोड़ना चाहते हैं तो आप इसका उपयोग कर सकते हैं rake db:drop। डेटाबेस को छोड़ने से कोई स्कीमा संघर्ष या खराब डेटा भी निकल जाएगा। यदि आप अपने पास मौजूद डेटा रखना चाहते हैं, तो इस कमांड को चलाने से पहले इसका बैकअप अवश्य लें।

यह सबसे महत्वपूर्ण रेक डेटाबेस कमांड के बारे में एक विस्तृत लेख है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.