خطأ في النزاهة:(1062، "إدخال مكرر '3-add_author' للمفتاح 2")

StackOverflow https://stackoverflow.com/questions/7384689

  •  29-10-2019
  •  | 
  •  

سؤال

قاعدة البيانات هي 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top