IntegrityError:(1062, "Duplicate entry '3-add_author' de la llave 2")
Pregunta
La base de datos es MySQL.
Yo uso el de django.contrib.auth.
Aquí está toda la info:
manage.py dumpdata auth > my_auth.json naturales --exclude contenttypes
Luego he eliminado toda la base de datos (caída de la base de datos mi_base_datos), y crea una nueva base de datos (crear base de datos new_database)(use ./manage.py syncdb para crear todas las tablas).
Entonces
manage.py loaddata my_auth.json
Tengo un error:
IntegrityError:(1062, "Duplicate entry '3-add_author' de la llave 2")
¿Cuál es el problema?
Cualquier ayuda será muy apreciada.Gracias!
Solución
(Actualizado)
Tienes razón (re tus comentarios a continuación).El problema es, de hecho, con auth.permission
.
Cuando se ejecuta syncdb
, auth.permission
es rellena automáticamente con los valores por defecto para todos los modelos instalado.Cualquiera de las siguientes ejecuciones de syncdb
se añaden nuevas entradas para cualquiera de los modelos que se han añadido recientemente.
Si en una etapa posterior de restablecer la base de datos y ejecutar syncdb
de nuevo, los valores serán repoblados y según el orden en el cual se instaló modelos son inspeccionados, los permisos asociados pueden ser agregados en un orden diferente, dándole diferentes identificadores de la anterior base de datos (si los modelos se han instalado en las etapas).
Para evitar este problema, puede dejar auth.permission
cuando el dumping su auth
de datos (como ya has señalado en sus comentarios), o el restablecimiento de la auth.permission
tabla antes de cargar el volcado de datos.
También, es importante el uso de claves naturales (--natural
) cuando el dumping de los datos, de modo que no hace referencia a los datos relacionados con el uso de su id entero (que puede no ser la misma cuando se carga en otro db).Esta característica se introducido en Django 1.2.