Domanda

Database è MySQL.

Io uso il django.contrib.auth.

Ecco tutte le informazioni:

.

gestisci.py dumpdata Auth> my_auth.json --natural --Exclude contentTypes

Quindi ho cancellato l'intero database (Doch Database My_Database) e ha creato un nuovo database (creare un database new_database) (utilizzare ./manage.py Syncdb per creare tutte le tabelle).

quindi

.

Gestisci.py LoadData my_auth.json

Ho ricevuto un errore:

.

IntegrityError: (1062, "Entry duplicato '3-add_author' per chiave 2")

Qual è il problema?

Qualsiasi aiuto sarà molto apprezzato.Grazie!

È stato utile?

Soluzione

(aggiornato)

Hai ragione (reisci i tuoi commenti). Il problema è davvero con auth.permission.

Quando si esegue syncdb, auth.permission è Popolate automaticamente con i valori predefiniti per Tutti i modelli installati . Eventuali successive runs of syncdb aggiungeranno nuove voci per qualsiasi modello che è stato aggiunto di recente.

Se in una fase successiva si ripristina il database e eseguire nuovamente il database di syncdb, i valori verranno ripopolati e a seconda dell'ordine in cui sono ispezionati i modelli installati, le autorizzazioni associate possono essere aggiunte in un ordine diverso dal proprio ID diversi dal proprio Database precedente (se i modelli sono stati installati in fasi).

Per evitare questo problema, è possibile lasciare auth.permission durante lo scarico dei dati auth (come hai già indicato nei tuoi commenti) o ripristinare la tabella auth.permission prima di caricare il tuo dump dei dati.

Inoltre, è importante utilizzare tasti naturali (--natural) Durante il dumping dei dati in modo che non faccia riferimento ai dati correlati utilizzando il suo ID intero (che potrebbe non essere lo stesso se caricato in un altro DB). Questa funzione era introdotto in Django 1.2 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top