خطأ في النزاهة:(1062، "إدخال مكرر '3-add_author' للمفتاح 2")
سؤال
قاعدة البيانات هي MySQL.
أستخدم django.contrib.auth.
هنا كل المعلومات:
Manage.py dumpdata auth > my_auth.json --natural --exclude contenttypes
ثم قمت بحذف قاعدة البيانات بأكملها (إسقاط قاعدة البيانات my_database)، وإنشاء قاعدة بيانات جديدة (إنشاء قاعدة بيانات new_database) (استخدم ./manage.py syncdb لإنشاء جميع الجداول).
ثم
Manage.py تحميل البيانات my_auth.json
لقد حصلت على خطأ:
خطأ في النزاهة:(1062، "إدخال مكرر '3-add_author' للمفتاح 2")
ما هي المشكلة؟
أي مساعدة سوف تكون محل تقدير كبير.شكرًا لك!
المحلول
(محدث)
أنت على حق (إعادة تعليقاتك أدناه).المشكلة في الواقع مع auth.permission
.
عند تشغيل syncdb
, auth.permission
يكون يتم ملؤها تلقائيًا بالقيم الافتراضية لجميع الطرز المثبتة.أي جولات لاحقة من syncdb
سيضيف إدخالات جديدة لأي نماذج تمت إضافتها مؤخرًا.
إذا قمت في مرحلة لاحقة بإعادة تعيين قاعدة البيانات وتشغيلها syncdb
مرة أخرى، ستتم إعادة ملء القيم، واعتمادًا على الترتيب الذي يتم به فحص النماذج المثبتة، قد تتم إضافة الأذونات المرتبطة بترتيب مختلف مما يمنحها معرفات مختلفة عن قاعدة البيانات السابقة (إذا تم تثبيت النماذج على مراحل).
لتجنب هذه المشكلة، يمكنك إما المغادرة auth.permission
خارج عند الإغراق الخاص بك auth
data (كما أشرت بالفعل في تعليقاتك)، أو إعادة تعيين auth.permission
الجدول قبل تحميل تفريغ البيانات الخاصة بك.
ومن المهم أيضًا استخدامه مفاتيح طبيعية (--natural
) عند التخلص من بياناتك بحيث لا تشير إلى البيانات ذات الصلة باستخدام معرف العدد الصحيح الخاص بها (والذي قد لا يكون هو نفسه عند تحميله في قاعدة بيانات أخرى).وكانت هذه الميزة تم تقديمه في جانغو 1.2.