2012-04-27 16 views
7

परीक्षण करते समय विफल रहा है, मैं अपने सर्वर सर्वर से डेटा को डंप करने की कोशिश कर रहा हूं ताकि मेरे देव सर्वर पर परीक्षण के रूप में उपयोग किया जा सके, लेकिन मुझे "./manage.py test" चलाने पर त्रुटियां मिल रही हैं देव सर्वर प्रोड सर्वर पर बनाई गई स्थिरता फ़ाइल निर्दिष्ट करता है।django फिक्स्चर (डंपडाटा से)

यहाँ की कोशिश करता रहा गूगल/stackoverflow खोज के आधार पर किया हैं:

# python manage.py dumpdata --indent=4 --natural 
error when running tests: IntegrityError: (1062, "Duplicate entry 'cms-agencies' for key 'app_label'") 

# python manage.py dumpdata --exclude contenttypes --indent=4 
error when running tests: IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`test_current`.`django_admin_log`, CONSTRAINT `content_type_id_refs_id_288599e6` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`))') 

# python manage.py dumpdata --exclude contenttypes --natural --indent=4 
error when running tests: IntegrityError: (1062, "Duplicate entry '14-add_agencies' for key 'content_type_id'") 

# python manage.py dumpdata --exclude contenttypes --exclude auth --indent=4 
error when running tests: IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`test_current`.`django_admin_log`, CONSTRAINT `user_id_refs_id_c8665aa` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))') 

# python manage.py dumpdata --exclude contenttypes --exclude auth --natural --indent=4 
error when running tests: IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`test_current_abril`.`django_admin_log`, CONSTRAINT `user_id_refs_id_c8665aa` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))') 

मैं भी हटाने के " 'init_command': 'SET storage_engine = InnoDB'" की कोशिश की settings.py से और अभी भी 1062 त्रुटियों मिला है।

मुझे इस समस्या को समझ में नहीं आता है। जब मैं फिक्स्चर लोड करता हूं तो प्रोजे सर्वर पर डीजेंगो बस डीबी को फिर से बनाना नहीं चाहिए?

+0

सहमति, बस db –

उत्तर

1

मेरा मानना ​​है कि त्रुटियां आपको बता रही हैं कि क्या हो रहा है। app_label अद्वितीय है? मुझे लगता है कि यह है। मुझे लगता है कि आपके पास दो ऑब्जेक्ट्स हैं जो app_label कुंजी मान के साथ हैं। (cms-agencies)

इसके अतिरिक्त जब आपके पास विदेशी कुंजी संबंध होता है तो आपको उस वस्तु को रखने की आवश्यकता होती है जो विदेशी कुंजी से मेल खाती है। डंप डेटा ऐसा नहीं करता है क्योंकि यह केवल एक मॉडल को डंप करता है।

कुछ https://github.com/davedash/django-fixture-magic इस के लिए बहुत अच्छा है। यह आपके मॉडल और सभी एफके निर्भरताओं को डंप करता है।

+2

का एक सटीक प्रतिलिपि करने के लिए स्थिरता में एक विकल्प प्यार होता, हाँ। जो मैं अनुमान लगा रहा हूं वह यह है कि django डीबी (अपने मॉडल के) में कुछ डेटा जोड़ता है, और फिर यह – Lem0n

10

मैं इसी तरह की समस्याओं था और इन आर्ग मेरे लिए काम किया:

python manage.py dumpdata --natural --exclude auth.permission --exclude contenttypes --indent 4 

मैं भी वस्तुओं दो बार बनाने post_save संकेत के साथ मुद्दों का एक बहुत कुछ था। इसके लिए एक फिक्स है: How do I prevent fixtures from conflicting with django post_save signal code?

+1

धन्यवाद के साथ संघर्ष करता है! Django 1.9 में 'प्राकृतिक' की कमी आई है, प्रतिस्थापन '- प्राकृतिक-विदेशी' है। विवरण के लिए [प्रलेखन] (https://docs.djangoproject.com/en/1.11/ref/django-admin/#dumpdata) देखें। – mhkuu

0

आपकी समस्या यह हो सकती है कि आपने एक यूनिकोड फ़ाइल को हटा दिया लेकिन django लोड होने पर एएससीआई फ़ाइल प्रारूप की अपेक्षा करता है। यह विंडोज पर पावरशेल का उपयोग करेगा यदि यह आपके लिए लागू होता है।

1

समस्या यह है कि यदि आप प्राकृतिक कुंजी (Django के बाद के संस्करणों में प्राकृतिक-विदेशी कुंजी) का उपयोग करते हैं, तो Django वास्तव में मूल वस्तुओं के अंदर कई से अधिक संबंधों को स्टोर करेगा। वह कुछ है जो आप चाहते हैं। लेकिन फिर आप सभी तालिकाओं को आसानी से डंप नहीं कर सकते हैं, आपको अपने डंप में कई से अधिक टेबल/मॉडल शामिल नहीं करना चाहिए क्योंकि आप उसी डेटा को दो बार लोड करेंगे - और बूम, डुप्लीकेट और इंटीग्रिटीइरर्स।

उदाहरण के लिए, आप auth.User और auth.Group, लेकिन नहीं auth.User_Groups डंप करना चाहिए। Django 1.7 से एक डंप के उदाहरण पर नजर:

{ 
    "model": "auth.group", 
    "fields": { 
     "permissions": [], 
     "name": "ST" 
    }, 
}, 
{ 
    "model": "auth.group", 
    "fields": { 
     "permissions": [], 
     "name": "property_manager" 
    }, 
}, 

{ 
    "model": "auth.user", 
    "fields": { 
     "username": "boss", 
     "groups": [ 
      ["property_manager"],["ST"], 
     ], 
     "user_permissions": [], 
    }, 
}, 

के बाद लाइन उपयोगकर्ताओं/अनुमतियाँ और सामग्री प्रकार के लिए एक व्यापक डंप बनाता है तो आप समान पंक्ति आदेश और प्राथमिक कुंजी (पर परीक्षण सहित समान प्रतिलिपि, प्राप्त करने के लिए डेव करने के लिए स्थानांतरित कर सकते हैं Django 1.7):

python manage.py dumpdata auth.User auth.Group contenttypes auth.Permission --indent 4 --natural-foreign > users.json 
संबंधित मुद्दे