2013-04-22 19 views
6

मुझे अपने डीजेंगो प्रोजेक्ट के साथ दक्षिण में काम करने में परेशानी हो रही है, मैंने दक्षिण में दस्तावेज़ों को दक्षिण में परिवर्तित करने के लिए दक्षिण दस्तावेज का पालन किया है और यहां भी देखा है (Why don't my south migrations work?) लेकिन सभी व्यर्थ हैं।मैं अपने दक्षिण माइग्रेशन को काम करने के लिए कैसे प्राप्त कर सकता हूं?

INSTALLED_APPS करने के लिए दक्षिण को जोड़ने के बाद और चलाने syncdb,

Synced: 
> django.contrib.messages 
> django.contrib.staticfiles 
> smartmin 
> nsms.console 
> django_extensions 
> pagination 
> restaurant_detail 
> live 
> debug_toolbar 
> orders 
> django.contrib.admindocs 

Not synced (use migrations): 
- django.contrib.auth 
- django.contrib.contenttypes 
- django.contrib.sessions 
- django.contrib.sites 
- guardian 
- south 
- django_quickblocks 
- rapidsms 
- rapidsms_httprouter 
- sorl.thumbnail 
- djangoratings 
- agon_ratings 
- django.contrib.admin 
(use ./manage.py migrate to migrate these) 
इस बिंदु मैं इस आदेश, python manage.py migrate अमल में

, इस देता त्रुटि django.db.utils.DatabaseError: relation "south_migrationhistory" does not exist LINE 1: ...gration", "south_migrationhistory"."applied" FROM "south_mig... क्या मैं गलत यहाँ कर रहा हूँ?

+2

क्या आपने syncdb --migrate – Charl

+0

@Charl को एक ही त्रुटि देता है –

+0

क्या आपके इंस्टॉल किए गए ऐप्स में दक्षिण है? – krak3n

उत्तर

13

यह आपका पहला प्रवास है या यदि आप बस से शुरू करना चाहते हैं:

  1. ड्रॉप और अपने वर्तमान डेटाबेस
  2. आपके माइग्रेशन निर्देशिका बनाने निकालें: rm -Rf your_app/migrations/
  3. सिंक और सिर्फ एक आदेश में माइग्रेट करते हैं: python manage.py syncdb --migrate

अगला माइग्रेशन की आवश्यकता होगी:

  1. python manage.py schemamigration your_app --auto
  2. python manage.py migrate your_app

जो मुझे :) के लिए काम करता

+0

यह काम नहीं किया, धन्यवाद –

+0

क्या आपको वही त्रुटि मिली? क्या आप पूरी त्रुटि पेस्ट कर सकते हैं? – chachan

+0

नोट: आपको अन्य निर्देशिकाओं में माइग्रेशन फ़ोल्डरों को हटाना होगा, जैसे 'साइट-पैकेज/django/contrib/auth/migrations' – BenjaminGolder

1

आप पहली बार दक्षिण में ही विस्थापित करने के लिए दक्षिण तालिकाएं बनाने के लिए, तो आप अपने अन्य अनुप्रयोगों की ओर पलायन कर सकते हैं:

# python manage.py migrate south 
# python manage.py migrate 
+0

हाँ, जो एक ही त्रुटि उत्पन्न करता है ... –

0

ऐसा लगता है कि माइग्रेशन टेबल आपके डेटाबेस में नहीं बनाए जा रहे हैं। यह शायद थोड़ा सा अजीब होगा:

python manage.py schemamigration south --initial 
python manage.py migrate south 

और फिर अन्य माइग्रेशन के साथ जारी रखें।

+0

यदि आपके पास दक्षिण तालिका नहीं है, तो आप अपने गैर-मौजूदा दक्षिण तालिकाओं में दक्षिण टेबल जोड़ना चाहते हैं? – AlvaroAV

+0

@Liarez मैं वास्तव में आपकी प्रतिक्रिया की सराहना करता हूं लेकिन जैसा कि आप देख सकते हैं, इस प्रश्न का उत्तर _odd_ था और यह लगभग एक वर्ष पुराना है। जब मैंने इसका उत्तर दिया तो मैं सिर्फ एक झुकाव ले रहा था (जैसा कि आप देख सकते हैं, अन्य भी थे)। आप मुझे उस क्षण में क्या सोच रहे थे याद दिलाने की उम्मीद करते हैं? वैसे भी, डाउनवोट करने के लिए स्वतंत्र महसूस करें :) –

+0

मुझे बस उस समस्या का सामना करना पड़ा, और मैंने देखा कि कई लोग आपके उत्तर की तरह चीजों को दोहराते हैं, और अगर कोई दक्षिण में खुद को माइग्रेट करने की कोशिश नहीं कर रहा है, तो इसका कोई अर्थ नहीं है, यही कारण है कि डाउनवोट, क्योंकि उत्तर – AlvaroAV

4

यह सब इसलिए आया क्योंकि मेरे site_packages में दक्षिण में पहले से ही एक माइग्रेशन निर्देशिका थी, जिसे मैं नहीं जानता था। जब मैं निर्देशिका से छुटकारा पाता था सब कुछ ठीक काम करता था। स्टेकओवरफ्लो लोगों से माफी मांगती है जो मेरी अनुपस्थित दिमागीपन के कारण हुई समस्या को हल करने के लिए मजबूर होती हैं।

+1

जो एक जीवन बचतकर्ता था, जब आप पीआईपी अनइंस्टॉल करते हैं तो फ़ोल्डर भी हटा नहीं जाता है :) –

2

यह समस्या अच्छी तरह से सलाह का पालन करके बनाई जा सकती है: यदि आपने अपने डीबगिंग प्रयासों में किसी भी समय python manage.py schemamigration south --initial की कोशिश की है, तो आप दक्षिण ऐप में अपने साइट-पैकेज में 'माइग्रेशन' फ़ोल्डर बनाएंगे। दुर्भाग्यवश, फ़ोल्डर का अस्तित्व यह है कि दक्षिण निर्धारित करता है कि क्या इसे अपनी परिवर्तित सिंकडीबी प्रक्रिया करते समय ऐप छोड़ना चाहिए या नहीं। यह भी शामिल है कि वह ऐप ... दक्षिण है।

जब आप अपने डेटाबेस कोशिश करते हैं और खरोंच से डिबग करने के लिए छोड़, दक्षिण के संशोधित syncdb south_migrationhistory तालिका बनाने, यह सोचते हैं कि माइग्रेशन फ़ोल्डर बेहतर जानते होंगे, और माइग्रेशन तालिका छोड़ देगा काम करने के लिए south_migrationhistory तालिका की आवश्यकता है।

  1. अपनी साइट पैकेज में जाओ और दक्षिण अनुप्रयोग में migrations/ फ़ोल्डर को हटाएँ:

    इस मुद्दे को हल करने के लिए।

  2. भागो python ./manage.py syncdb एक आखिरी बार

की स्थापना रद्द/पिप के माध्यम से दक्षिण फिर से स्थापित करने वास्तव में, इसे काट नहीं होगा के रूप में यह अपमानजनक फ़ोल्डर अछूता छोड़ देंगे।

वैकल्पिक रूप से, Marius Grigaitis ने उसी त्रुटि के लिए एक समाधान का प्रस्ताव दिया, हालांकि इसे दक्षिण बग के समय जिम्मेदार ठहराया गया था।

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