IntegrityError: (1062, Double entrée pour la clé)
J'ai essayé de purger ma base de données, mydb
, et remplit à nouveau pour voir les effets de certains changements à mon Django modèle. Ensuite tout ce qui s'est passé. J'ai roulé en arrière à mon modèle précédent, mais je encore les erreurs.
Je ne suis pas MySQL pro, et je n'arrive pas à comprendre le problème et quoi faire à ce sujet; j'ai essayé de créer une nouvelle base de données avec un autre nom, mais qui n'est pas arrivé. Je suppose que c'est un problème créé par mon projet Django.
Voici toutes les infos:
C:\Users...>python manage.py syncdb La création de tables ... Création de la table auth_permission Création de la table auth_group_permissions Création de la table auth_group Création de la table auth_user_user_permissions Création de la table auth_user_groups Création de la table auth_user Création de la table auth_message Création de la table django_content_type Création de la table django_session Création de la table django_site Création de la table django_admin_log Création de la table forum_category Création de la table forum_thread Création de la table forum_post Vous venez d'installer Django auth du système, ce qui signifie que vous n'avez pas tout les superutilisateurs défini. Vous souhaitez en créer un maintenant? (oui/non): oui Nom d'utilisateur (Laisser vide pour utiliser le 'moi'): admin E-mail: [email protected] Mot de passe: Mot de passe (encore une fois): Super-utilisateur créé avec succès. Traceback (most recent call last): Fichier "manage.py", la ligne 14, en execute_manager(paramètres) Fichier "C:\Python27\lib\site-packages\django\core\management\__init__.py", la ligne 438, execute_manager utilitaire.execute() Fichier "C:\Python27\lib\site-packages\django\core\management\__init__.py" de ligne, 379, en exécution de soi.fetch_command(sous-commande).run_from_argv(de soi.argv) Fichier "C:\Python27\lib\site-packages\django\core\management\base.py" de ligne, 191, dans run_from_argv auto.execute(*args, **options.__dict__) Fichier "C:\Python27\lib\site-packages\django\core\management\base.py", de la ligne 220, en exécution de sortie = auto.la poignée(*args, **options) Fichier "C:\Python27\lib\site-packages\django\core\management\base.py", la ligne 351, dans la poignée de retour auto.handle_noargs(**options) Fichier "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py", à la ligne 109, dans handle_noargs emit_post_sync_signal(created_models, le niveau de verbosité, interactif, db) Fichier "C:\Python27\lib\site-packages\django\core\management\sql.py", la ligne 190, dans emit_post_sync_signal interactive=interactif, db=db) Fichier "C:\Python27\lib\site-packages\django\dispatch\dispatcher.py", la ligne 172, envoyer une réponse à l' = récepteur(signal=auto, expéditeur=expéditeur, **nommé) Fichier "C:\Python27\lib\site-packages\django\contrib\auth\management\__init__.p ", ligne 51, dans create_permissions content_type=ctype Fichier "C:\Python27\lib\site-packages\django\db\models\manager.py", la ligne 138, dans la création d'un retour de l'auto.get_query_set().créer(**kwargs) Fichier "C:\Python27\lib\site-packages\django\db\models\query.py", ligne 360, en créer obj.enregistrer(force_insert=True, l'utilisation de=auto.db) Fichier "C:\Python27\lib\site-packages\django\db\models\base.py", la ligne 460, la sauvegarde auto.save_base(à l'aide d'=aide, force_insert=force_insert, force_update=force_up date) Fichier "C:\Python27\lib\site-packages\django\db\models\base.py" de ligne, 553, dans save_base résultat = manager._insert(valeurs, return_id=update_pk, à l'aide de=aide) Fichier "C:\Python27\lib\site-packages\django\db\models\manager.py" de ligne, 195, dans _insert retour insert_query(de soi.modèle, des valeurs, **kwargs) Fichier "C:\Python27\lib\site-packages\django\db\models\query.py", de la ligne de 1436, dans insert_query de la requête de retour.get_compiler(aide=).execute_sql(return_id) Fichier "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" de ligne, 791, dans execute_sql curseur = super(SQLInsertCompiler, auto).execute_sql(Aucun) Fichier "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", de la ligne à 735, dans execute_sql curseur.execute(sql, params) Fichier "C:\Python27\lib\site-packages\django\db\backends\util.py", à la ligne 34, en exécution de retour auto.le curseur.execute(sql, params) Fichier "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py", à la ligne 86, en exécution de retour auto.le curseur.execute(requête, args) Fichier "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\MySQLdb\cursors.py", ligne 174, à exécuter soi-même.errorhandler(auto, exc, valeur) Fichier "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\MySQLdb\connections.py", à la ligne 36, dans defaulterrorhandler élever errorclass, errorvalue django.db.utils.IntegrityError: (1062, "Duplicate entry '9-delete_category' for key 'content_type_id'")
#models.py de django.db importer des modèles de django.contrib.auth.importation de modèles de l'Utilisateur Catégorie(les modèles.Modèle): title = modèles.CharField(max_length=80) classe Meta: verbose_name_plural = "catégories" les autorisations = ( ("create_category", "Peut créer de nouvelles catégories"), ("edit_category", "Pouvez modifier les titres des catégories"), ("delete_category", "vous Pouvez supprimer une catégorie"), ("merge_category", "Pouvez fusionner plusieurs catégories ensemble"), ) la classe Thread(les modèles.Modèle): creation_date = modèles.DateTimeField() auteur = modèles.ForeignKey(Utilisateur) title = modèles.CharField(max_length=80) category = modèles.ForeignKey(Catégorie) classe Meta: la commande = ["-creation_date"] les autorisations = ( ("create_thread", "Créer de nouveaux threads"), ("edit_thread", "Modifier les titres de fil"), ("delete_thread", "Supprimer les discussions"), ("merge_thread", "Fusionner plusieurs threads"), ("lock_thread", "les fils de la mèche"), ("unlock_thread", "Ouvrir verrouillé threads"), ("ban_user_in_thread", "Interdiction de l'utilisateur de poster dans le thread"), ("timeout_user_in_thread", "Interdiction de l'utilisateur de poster dans le thread temporairement"), ("appoint_threadmin", "fournir à l'utilisateur un mod comme des autorisations dans un fil"), ) classe Signet(les modèles.Modèle): utilisateur = modèles.ForeignKey(Utilisateur) thread = modèles.ForeignKey(Thread) classe de Souscription(les modèles.Modèle): utilisateur = modèles.ForeignKey(Utilisateur) thread = modèles.ForeignKey(Thread) Post de classe(les modèles.Modèle): creation_date = modèles.DateTimeField() auteur = modèles.ForeignKey(Utilisateur) thread = modèles.ForeignKey(Thread) contenu = modèles.TextField() classe Meta: la commande = ["creation_date"] les autorisations = ( ("create_post", "Peut créer un nouveau post"), ("edit_post", "Pouvez modifier tous les utilisateurs de "posts"), ("delete_post", "vous Pouvez supprimer des postes"), )
+----------------------------+ | Tables_in_mydb | +----------------------------+ | auth_group | | auth_group_permissions | | auth_message | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_session | | django_site | | forum_bookmark | | forum_category | | forum_post | | forum_subscription | | forum_thread | +----------------------------+ mysql> select * from django_content_type; +----+--------------+--------------+--------------+ | id | nom | app_label | modèle | +----+--------------+--------------+--------------+ | 1 | autorisation | auth | permission | | 2 | groupe | auth | groupe | | 3 | user | auth | utilisateur | | 4 | message | auth | message | | 5 | type de contenu | contenttypes | contenttype | | 6 | session | sessions | session | | 7 | site | les sites | site | | 8 | entrée de journal | admin | logentry | | 9 | catégorie | forum | categorie | | 10 | thread | forum | thread | | 11 | signet | forum | signet | | 12 | abonnement | forum | abonnement | | 13 | post | forum | post | +----+--------------+--------------+--------------+
Cela ressemble à une clé étrangère de la vérification a échoué. Où est content_type_id être utilisé comme une clé étrangère?
Vous pouvez modifier
Vous pouvez modifier
C:\Python27\lib\site-packages\django\db\backends\mysql\base.py
avant la ligne 86, ajoutant print query % args
, puis exécutez de nouveau syncdb pour voir exactement quelles requêtes sont exécutées avant qu'il tombe en panne. '9-delete_category valeur n'est certainement pas à regarder à droite pour un 'content_type_id' champ.OriginalL'auteur Kiwi | 2011-09-06
Vous devez vous connecter pour publier un commentaire.
Django automatiquement crée peu d'autorisations par défaut sur tous les modèles, ce sont:
add
,delete
etchange
. Vous obtenez l'erreur d'intégrité parce que vous tentez de créer des autorisations avec le même nom. Juste enleverdelete_***
de votre Meta description et tout devrait être ok.OriginalL'auteur Ski
La accepté de répondre résout la question d'origine et est un bon point de départ pour d'autres qui sont venus sur cette page à la recherche de l'erreur.
À ajouter à cette référence pour l'avenir, dans le cas où ce n'est pas un problème d'autorisations spécifiques mais un gabarit de chargement afin problème, cela peut être résolu avec l'aide de
call_command
:OriginalL'auteur Wtower