Maison  >  Article  >  base de données  >  Comment résoudre les conflits de type de contenu du luminaire Django lors du chargement dans MySQL ?

Comment résoudre les conflits de type de contenu du luminaire Django lors du chargement dans MySQL ?

DDD
DDDoriginal
2024-11-25 05:17:17413parcourir

How to Resolve Django Fixture ContentType Conflicts When Loading into MySQL?

Problèmes d'appareils Django et de ContentType

Tenter de charger des appareils Django dans une base de données MySQL peut entraîner des conflits de types de contenu. Le dumping des données d'une application spécifique entraîne initialement des problèmes de clé étrangère manquante, nécessitant l'inclusion d'applications supplémentaires dans la commande dump. Cependant, le chargement de l'appareil avec cette approche rencontre une violation de contrainte en raison de clés primaires conflictuelles pour les types de contenu.

Cette situation découle de la tentative de Django de recréer dynamiquement des types de contenu avec des valeurs de clé primaire différentes de celles présentes dans l'appareil. Comme suggéré dans le système de suivi des bogues de Django, une solution de contournement consiste à vider les données de l'application de types de contenu.

Cependant, si les autorisations du modèle personnalisé sont définies, la solution recommandée devient discutable. Pour résoudre ce problème, il est recommandé d'utiliser --natural dans la commande dumpdata. Cette option utilise des clés naturelles pour les clés étrangères, ce qui améliore la durabilité.

Voici un exemple illustrant cette approche :

./manage.py dumpdata --natural escola > fixture.json

De plus, il existe d'autres arguments utiles qui peuvent être utilisés avec dumpdata, notamment :

  • --indent=4 : améliore la lisibilité en mettant en retrait le sortie
  • -e sessions : exclut les données de session du dump
  • -e admin : exclut l'historique des actions d'administration
  • -e contenttypes -e auth.Permission : exclut les objets recréé automatiquement pendant la synchronisation, mais nécessite --natural pour éviter les problèmes d'alignement des clés primaires

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn