2011-03-23 6 views
6

मुझे अपने django परीक्षण ठीक से चलाने में कुछ कठिनाई हो रही है; मैं नाक उपयोग कर रहा हूँ, और मैं जब माइग्रेशन लागू किया जा रहा था एक त्रुटि हो रही है, उस तालिका 1 से तालिका 2 के लिए एक विदेशी कुंजी संबंध त्रुटि के साथ विफल शुरू कर दिया:नाक का उपयोग करते हुए यूनिट टेस्ट चलाने पर दक्षिण के साथ त्रुटि

django.db.utils.DatabaseError: relation "table2_column" does not exist 

रास्ता माइग्रेशन जा रहे थे को देखते हुए यह मेरे लिए स्पष्ट था कि table1 विदेशी कुंजी संबंध से पहले लागू किया गया था नहीं बनाया गया था लागू किया है, इसलिए मैं यह पता लगाने की कैसे निर्भरता के लिए मजबूर करने की कोशिश की, और पाया निम्न आलेख: http://south.aeracode.org/docs/dependencies.html

मैं तो कहा:

depends_on = (
    ("app2", "0001_inital"), 
) 

मेरी ऐप 1/0001_initial.py फ़ाइल में।

south.exceptions.DependsOnUnknownMigrationMigration 'app1:0001_initial' depends on unknown migration 'app2:0001_inital'. 

यह कैसे हल करने के लिए पर कोई भी विचार:

दुर्भाग्य से अब मैं निम्न त्रुटि हो रही है?

+0

सुनिश्चित नहीं हैं कि अगर मैं बहुत मदद कर सकते हैं (यह अभी भी उपयोगी आप अपने unittests तेजी लाने के लिए चाहते हैं, तो है।), लेकिन अब मैं नाक की खोज! मैं पहले से ही दक्षिण के बारे में जानता था, लेकिन मुझे अपने स्वयं के परीक्षण ढांचे को लुढ़का था क्योंकि मुझे नाक के बारे में पता नहीं था। दक्षिण त्रुटि के लिए, फ़ाइल /app2/migrations/0001_initial.py पर मौजूद है? –

+0

हां, माइग्रेशन वास्तव में मौजूद है। – Simon

उत्तर

5

आपके पास माइग्रेशन के नाम पर एक टाइपो है जो इसके आधार पर है। यह होना चाहिए:

depends_on = (
    ("app2", "0001_initial"), 
) 

यह निर्भरता प्रणाली, मेरे लिए काम किया ठीक उसी मुद्दा आपके द्वारा यहां सूचीबद्ध होने, और फिर निर्भरता प्रणाली खोजने दक्षिण के डॉक्स के बाद। आप हाथ से निर्माण किया माइग्रेशन मिल गया है और आप यकीन है कि आपने फ़ाइल नाम अपने depends_on या needed_by, चेक मेल खाता है:

+0

मैंने वास्तव में इसका परीक्षण नहीं किया है क्योंकि मैंने बाद में इस पर काम किया था, लेकिन मेरे पास निश्चित रूप से एक टाइपो था! – Simon

19

मुझे यकीन नहीं है कि यह आपकी समस्या का समाधान करेगा, लेकिन आप परीक्षण चलाते समय माइग्रेशन के बजाय सिंकडब का उपयोग करने के लिए एक सेटिंग जोड़ सकते हैं। अपनी सेटिंग्स.py

SOUTH_TESTS_MIGRATE = False 
+0

धन्यवाद! इससे एक टन मदद मिली। मैं इसे उत्तर के रूप में चुनने का लुत्फ उठा रहा हूं, लेकिन वास्तव में जानना चाहूंगा कि क्या मैं काम करने के लिए माइग्रेशन प्राप्त कर सकता हूं। – Simon

0

यह त्रुटि अगर वहाँ लक्ष्य मॉड्यूल के आयात के दौरान एक त्रुटि है फेंक दिया जाता है त्रुटियों के लिए संदर्भित फ़ाइल।

इसके अलावा, SOUTH_TESTS_MIGRATE को गलत पर सेट करने से समस्या ठीक नहीं होगी। इसका मतलब यह है कि जब तक आप माइग्रेशन का उपयोग करने का प्रयास नहीं करते हैं तब तक आपको समस्या दिखाई नहीं देगी।

http://south.readthedocs.org/en/latest/settings.html

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