मैं दो django प्रतिष्ठानों (उत्पादन और परीक्षण) के बीच डेटा सिंक करने की कोशिश कर रहा हूं। मैं उत्पादन पर ./manage.py dumpdata --natural
का उपयोग कर कर रहा हूं, फिर ./manage.py loaddata
परीक्षण पर ताज़ा syncdb
'एड डेटाबेस में।Django: प्रत्येक तालिका से सभी डेटा हटाएं (लेकिन टेबल को स्वयं रखें)
सब कुछ ठीक काम कर रहा था जब तक कि मैंने एक नई कस्टम अनुमति नहीं दी। उत्पादन syncdb
ने खाली डेटाबेस पर एक नए syncdb
की तुलना में इस नई अनुमति को एक अलग क्रम (विभिन्न प्राथमिक कुंजी के साथ) में लोड किया। नतीजतन, यह एक अलग आईडी हो जाता है। तो प्राकृतिक कुंजी, जब मैं डेटा लोड करने का प्रयास उपयोग करने के बावजूद, मैं इस त्रुटि मिल रही है जब पहली बाहर के आदेश अनुमति वस्तु भरी हुई है:
IntegrityError: duplicate key value violates unique constraint "auth_permission_content_type_id_codename_key"
सबसे आसान तरीका मैं इसे ठीक करने के बारे में सोच सकते परीक्षण स्थापना में प्रत्येक तालिका से सभी डेटा को निकालना है - यानी, तालिका बनाने के लिए syncdb
का उपयोग करने के लिए, और प्रारंभिक डेटा भी लोड नहीं करना है। लेकिन syncdb
आपको आरंभिक डेटा/सिग्नल चरण को छोड़ने नहीं देता है। प्रत्येक मॉडल या टेबल नाम को स्पष्ट रूप से समझाते हुए, syncdb
पर कॉल करने के बाद मैं सभी प्रारंभिक डेटा को कैसे हटा सकता हूं? या syncdb
का उपयोग किए बिना खाली टेबल बनाने का कोई तरीका है?
./manage.py flush
वह नहीं है जो मैं बाद में हूं - यह प्रारंभिक डेटा को पुनः लोड करता है और सिंकडब सिग्नल ट्रिगर करता है।
रीसेट को बहिष्कृत किया गया है, क्योंकि आपके द्वारा लिखे गए दस्तावेज़ों का उल्लेख है; लेकिन इसके लिए आपको प्रत्येक ऐप की गणना करने की आवश्यकता है, जिसे मैं टालना चाहता हूं। फ्लश इसका प्रतिस्थापन है; लेकिन यह प्रारंभिक डेटा लोड करता है। – user85461
बहिष्कृत इसका मतलब यह नहीं है कि आप इसका उपयोग नहीं कर सकते हैं। यदि आप ऐप नामों की गणना नहीं करना चाहते हैं, तो मुझे लगता है कि आपको अपना प्रबंधन कमांड लिखना होगा। – Alasdair
इसे 1.5 में हटा दिया गया है। दुर्भाग्य से ऐसा लगता है कि एक ऐप को फ्लश करने का कोई तरीका नहीं है :( – Andre