2011-06-22 12 views
24

मैं एक दृढ़ DumpData के साथ बनाया लोड हो रहा हूँ, और निम्न अपवाद हो रही दौरान स्थिरता लोड हो रहा है:IntegrityError जब Django परीक्षण

Problem installing fixture 'db_dump.json': Traceback (most recent call last): 
    File "/usr/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 174, in handle 
    obj.save(using=using) 
    File "/usr/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save 
    models.Model.save_base(self.object, using=using, raw=True) 
    File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 526, in save_base 
    rows = manager.using(using).filter(pk=pk_val)._update(values) 
    File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 491, in _update 
    return query.get_compiler(self.db).execute_sql(None) 
    File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 869, in execute_sql 
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
    File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py", line 234, in execute 
    return Database.Cursor.execute(self, query, params) 
IntegrityError: columns app_label, model are not unique 

यह एक sqlite3 बैकएंड के साथ है।

अद्यतन: प्राकृतिक कुंजी का उपयोग करने से कोई फर्क नहीं पड़ता है।

इसका क्या अर्थ है, और यह क्यों हो रहा है?

उत्तर

47

स्पष्ट रूप से अनचाहे के लिए जाल में से एक यह है कि फिक्स्चर निर्यात करते समय किसी को सामग्री प्रकार को बाहर करना होगा। (जानकारी के लिए #django पर subsume करने के लिए धन्यवाद)।

सामग्री प्रकारों को बाहर करने के लिए dumpdata कमांड चलाते समय -e विकल्प का उपयोग करें।

$./manage.py dumpdata -e contenttypes > initial_data.json 
+1

हाँ, कि एक के बाद कई बार, हालांकि केवल जब एक इंजन से देव डीबीएस पलायन को मार गिराया गया। परीक्षण फिक्स्चर के लिए एक सामान्य नियम यह है कि आपको पता होना चाहिए कि * वास्तव में * उनमें क्या है, इसलिए आप जानते हैं कि आपके परीक्षणों में क्या चल रहा है, इसलिए आपको कोई आश्चर्य नहीं है। – eternicode

+7

इस तरह कुछ ऐसा मेरे लिए काम करता है (केवल आगे के संदर्भ के लिए): ./manage.py dumpdata -e contenttypes >itial_data.json। –

+1

धन्यवाद बहुत बचाया – soField

9
python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json 
संबंधित मुद्दे