2010-05-16 13 views
24

के लिए NoMigrations अपवाद मैं थोड़ी देर के लिए अपने प्रोजेक्ट पर दक्षिण का उपयोग कर रहा हूं, लेकिन मैंने हाल ही में विकास की एक बड़ी मात्रा में विकास किया है और विकास मशीन बदल दी है और मुझे लगता है कि इस प्रक्रिया में कुछ गड़बड़ है। परियोजना ठीक काम करती है, लेकिन मैं माइग्रेशन लागू नहीं कर सकता। जब भी मैं एक प्रवास मैं निम्नलिखित ट्रैसबैक मिल लागू करने का प्रयास:दक्षिण माइग्रेशन त्रुटि: django.contrib.auth

danpalmer:pest Dan$ python manage.py migrate frontend 
Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_manager(settings) 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager 
    utility.execute() 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 303, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 222, in execute 
    output = self.handle(*args, **options) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/management/commands/migrate.py", line 102, in handle 
    delete_ghosts = delete_ghosts, 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 182, in migrate_app 
    applied = check_migration_histories(applied, delete_ghosts) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/__init__.py", line 85, in check_migration_histories 
    m = h.get_migration() 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 34, in get_migration 
    return self.get_migrations().migration(self.migration) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/models.py", line 31, in get_migrations 
    return Migrations(self.app_name) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 60, in __call__ 
    self.instances[app_label] = super(MigrationsMetaclass, self).__call__(app_label_to_app_module(app_label), **kwds) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 88, in __init__ 
    self.set_application(application, force_creation, verbose_creation) 
    File "/Library/Python/2.6/site-packages/South-0.7-py2.6.egg/south/migration/base.py", line 159, in set_application 
    raise exceptions.NoMigrations(application) 
south.exceptions.NoMigrations: Application '<module 'django.contrib.auth' from '/Library/Python/2.6/site-packages/django/contrib/auth/__init__.pyc'>' has no migrations. 

मुझे लगता है कि दक्षिण के साथ अनुभवी नहीं हूँ और मैं पहले इस त्रुटि नहीं मिले हैं। मुझे लगता है कि इस त्रुटि के बारे में ऑनलाइन एकमात्र उपयोगी उल्लेख है कि मैं 0-0 के लिए सोचता हूं और मैं दक्षिण 0.7 पर हूं। मैं बस सुनिश्चित करने के लिए 'easy_install -U दक्षिण' भाग गया।

+0

क्या आपने पहले दक्षिण-माइग्रेशन इतिहास को सुनिश्चित करने के लिए सिंक किया था? या जब आप मशीन ले जाते हैं तो क्या आपने डीबी डंप आयात किया था? –

+0

इसके अलावा, django.contrib.auth माइग्रेशन का उपयोग नहीं करना चाहिए (जब तक कि आप इसे स्वयं हैक करने के लिए कुछ नहीं कर रहे हों)। क्या आपने contrib.auth के लिए मैन्युअल रूप से माइग्रेशन निर्देशिका बनाई है? –

+0

मैंने एक सिंकडीबी शुरू करने के लिए किया था। डेटाबेस एक ही डेटाबेस है क्योंकि मैं सिर्फ विकास के लिए SQLite डेटाबेस का उपयोग करता हूं। दूसरे बिंदु के लिए, नीचे मेरा समाधान देखें। – danpalmer

उत्तर

26

मैंने समस्या हल की।

जाहिर है, आप डीजेगो के हिस्से वाले ऐप्स के लिए माइग्रेशन करने के लिए दक्षिण का उपयोग नहीं कर सकते, जैसे 'auth', इसलिए मुझे नहीं पता था कि यह क्यों कोशिश कर रहा था।

मुझे एहसास हुआ कि थोड़ी देर के लिए मेरे पास एथ नामक मेरी परियोजना के भीतर एक और ऐप था। मैंने इसे नाम बदलने से पहले इसे किसी बिंदु पर माइग्रेट करने का प्रयास किया होगा और इसलिए इसे सब कुछ गड़बड़ कर दिया होगा।

मैंने उस ऐप के डेटाबेस से माइग्रेशन इतिहास प्रविष्टियों को हटा दिया और सबकुछ ठीक था।

+0

मुझे एक ही समस्या थी लेकिन टिप्पणी ऐप के साथ। धन्यवाद। – zerofuxor

+0

आज मैसेज ऐप के साथ समान रूप से दौड़ें। – Jyrsa

+1

आप उन ऐप्स के लिए दक्षिण का उपयोग कर सकते हैं जो डीजेगो का हिस्सा हैं जैसे कि, और कभी-कभी यह समझ में आता है। कृपया नीचे मेरा जवाब देखें। मुझे यकीन नहीं है कि स्वीकार्य उत्तर सही नहीं होने पर क्या करना है, शायद आप अपना सही जवाब रखने के लिए अपना उत्तर संपादित कर सकते हैं? – mrooney

43

इस यहाँ भविष्य Googlers

मैं हाल ही में आज मेरे अपने एप्लिकेशन में से एक के साथ इस अपवाद में भाग है, न कि योगदान के लिए छोड़कर।

के बाद सिर scratching का एक सा मैंने देखा है कि किसी भी तरह फ़ाइल ...

app/migrations/__init__.py 

... हटा दिया गया था, जिसका मतलब है अजगर नहीं कर सकते एक मॉड्यूल आदि आदि के रूप में dir आयात

+2

हां। एक जादू की तरह काम किया। – mlissner

+2

धन्यवाद, इससे मुझे भी मदद मिली। – akozin

+2

मेरे लिए डेटाबेस में पंजीकृत माइग्रेशन और 'माइग्रेशन' निर्देशिका को हटाने के बीच एक असंगत स्थिति थी। एक 'माइग्रेशन' जोड़ना और इसके '__init __। Py' ने समस्या हल की। – gipi

1

मुझे भी एक ही समस्या थी, हालांकि यह रूट एप्लिकेशन के साथ हुआ था। मैंने पाया कि यह पहले के विकास से मेरी परियोजना रूट में एक खाली models.py के कारण था। मुझे संदेह है कि यह समस्या परियोजना अनुप्रयोगों के लिए भी उत्पन्न हो सकती है।

1

आप अंतर्निहित मॉड्यूल पर माइग्रेशन कर सकते हैं, और यह निश्चित रूप से डेटा माइग्रेशन के लिए समझ में आता है, उदाहरण के लिए, सभी उपयोगकर्ता नामों को छोटा कर रहा है, अमान्य ईमेल को हटा रहा है, और cetera।

django.contrib.auth.models से एक उपयोगकर्ता के मामले में, बस का उपयोग करें: ORM [ 'auth.User']

5

मैं भी यही समस्या थी, और अंत में मैं हटाकर इसे तय south_migrationhistory तालिका से सभी पंक्तियां और टर्मिनल से निम्न आदेश चलाएं।

python manage.py reset south 

यह answer कैसे दक्षिण स्थानांतरण इतिहास को रीसेट करने के बारे में समझाने।

संपादित करें:

Django 1.5 के बाद से reset आदेश काम नहीं करेगा। इसके बजाय आपको flush का उपयोग करना होगा।

python manage.py flush 

इस stackoverflow answer पर फ्लश क्या पढ़ेगा इसके बारे में अधिक जानने के लिए।

+1

नोट करें "रीसेट" कमांड को Django 1.5 में "फ्लश" के साथ प्रतिस्थापित किया गया था, हालांकि फ्लश अलग-अलग तालिकाओं के साथ काम नहीं करता है। इसके लिए आपको पुराने रीसेट के इस पोर्ट का उपयोग करने की आवश्यकता होगी: https://github.com/gregmuellegger/django-reset – shacker

0

मुझे एक ही त्रुटि मिली, लेकिन एक django मॉड्यूल के लिए नहीं, लेकिन एक मॉड्यूल के लिए जो मेरे वर्चुअलनेव का हिस्सा था। मुझे नहीं पता कि दक्षिण उस मॉड्यूल के लिए माइग्रेशन कैसे कर सकता था, क्योंकि इसमें वास्तव में कोई माइग्रेशन नहीं था। तब मुझे याद आया कि मैंने डेटाबेस को एक टेस्ट एनवी से कॉपी किया था जिसे वही माना जाता था। लेकिन यह पता चला कि अन्य env मॉड्यूल का थोड़ा अलग संस्करण था जो माइग्रेशन था। मैंने दक्षिण माइग्रेशन हिस्ट्री से अपमानजनक पंक्ति को हटा दिया (क्योंकि यह वैसे भी एक परीक्षण env था)।

10

मैं सिर्फ शाखाओं और ऐप्लिकेशन संस्करण Swithcing के बाद इस में भाग गया, और अनुप्रयोग है कि अब south_migrationhistory मेज से कोई माइग्रेशन था

./manage.py dbshell 

mysql> SELECT * FROM south_migrationhistory WHERE app_name = 'social_auth'; 

104 | social_auth | 0001_initial...                 
105 | social_auth | 0002_auto__add_unique_nonce... 


mysql> DELETE FROM south_migrationhistory WHERE app_name = 'social_auth'; 
Query OK, 2 rows affected (0.00 sec) 
+0

यह एक त्वरित फिक्स भी है जब आप रीसेट करने के बजाय केवल एक ही ऐप्स माइग्रेशन को हटाना चाहते हैं/दक्षिण में flushing। – andyzinsser

+0

बहुत बढ़िया यह मेरी समस्या हल हो गया, हालांकि मैं ओपी हेहे चीयर्स नहीं हूँ – NeoVe

0

मैं django.contrib.admin के साथ एक समान समस्या नहीं था हटाने का निर्णय मुझे अपने प्रवासन चलाने दो। मैंने सेटिंग्स में django.contrib.admin को अक्षम करके इसे हल किया .INSTALLED_APPS

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