2010-12-15 131 views
0

Je ne suis pas un expert Django, mais d'après ce que je peux comprendre, il est impossible de dire à syndb pas d'essayer d'exécuter des instructions ALTER pour créer des contraintes de clé étrangère sur la base de données.Est-il possible de faire de la commande syndb de Django PAS essayer de créer des clés étrangères réelles dans la base de données?

J'ai récemment essayé de mettre à niveau mon installation MySQL Cluster de la version 7.0.6 à la dernière version 7.1.9a. Cela a révélé un bug dans cette dernière version de MySQL dans laquelle les constructions de clés étrangères ne sont pas ignorées sur les moteurs qui ne les supportent pas comme dans les versions précédentes. C'est certainement un bug MySQL que je leur ai soumis et ils ont vérifié comme valide. En attendant, tant que ce bogue n'est pas corrigé, je suis bloqué par une version très ancienne de MySQL et je me demandais si je pouvais contourner le problème en forçant syncdb à ne pas essayer de créer des clés étrangères la base de données, il suffit de créer les tables. Sans entrer dans les détails, dans mon cas, la commande syncdb est intégrée à une automatisation qui ne se limite pas à la simple construction d'une base de données à partir de modèles, donc je ne peux pas très facilement contourner ce problème manuellement.

Toute contribution ou idée est appréciée.

+1

Pourquoi ne pas simplement utiliser un moteur de table qui les prend en charge? –

Répondre

0

Sud peut le faire (http://south.aeracode.org/)

Vous pourriez faire un schemamigration puis modifiez la migration à la main, laissant le FK construit. Vous pouvez aussi faire vos propres règles d'introspection dans le Sud qui automatisent cela, je suppose. Cela pourrait toutefois interférer avec votre automatisation syncdb.

0

Vous pouvez exécuter python manage.py sqlall nom_app, supprimer les contraintes ALTER FK et charger le code SQL manuellement.