Frage

Datenbank ist MySQL.

Ich benutze den Django.beitrag.auth.

Hier sind alle Infos:

manage.py dumpdata auth > mein_auth .json --natural --Inhaltstypen ausschließen

Dann habe ich die gesamte Datenbank gelöscht (drop database my_database ) und eine neue Datenbank erstellt (create database new_database) (use ./manage.py syncdb, um alle Tabellen zu erstellen).

Dann

manage.py ladedaten mein_auth.json

Ich habe eine Fehlermeldung erhalten:

Integritätsfehler:(1062, "Doppelter Eintrag '3-add_author' für Schlüssel 2")

Was ist das Problem?

Jede Hilfe wird sehr geschätzt.Vielen Dank!

War es hilfreich?

Lösung

(Aktualisiert)

Du hast recht (siehe deine Kommentare unten).Das Problem ist in der Tat mit auth.permission.

Wenn du rennst syncdb, auth.permission is automatisch mit Standardwerten für alle installierten Modelle gefüllt.Alle nachfolgenden Läufe von syncdb fügt neue Einträge für alle Modelle hinzu, die kürzlich hinzugefügt wurden.

Wenn Sie zu einem späteren Zeitpunkt die Datenbank zurücksetzen und ausführen syncdb auch hier werden die Werte neu aufgefüllt und abhängig von der Reihenfolge, in der installierte Modelle überprüft werden, können die zugehörigen Berechtigungen in einer anderen Reihenfolge hinzugefügt werden, wodurch sie andere IDs als Ihre vorherige Datenbank erhalten (wenn Modelle schrittweise installiert wurden).

Um dieses Problem zu vermeiden, können Sie entweder gehen auth.permission raus, wenn du deine entleerst auth daten (wie Sie bereits in Ihren Kommentaren darauf hingewiesen haben) oder das Zurücksetzen der auth.permission tabelle vor dem Laden Ihres Datendumps.

Außerdem ist es wichtig zu verwenden natürliche Schlüssel (--natural), wenn Sie Ihre Daten ausgeben, damit sie nicht mit ihrer Ganzzahl-ID auf verwandte Daten verweisen (die beim Laden in eine andere Datenbank möglicherweise nicht identisch sind).Diese Funktion war eingeführt in Django 1.2.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top