ホームページ > データベース > mysql チュートリアル > MySQL で Contenttype の競合により Django フィクスチャのロードに失敗するのはなぜですか?

MySQL で Contenttype の競合により Django フィクスチャのロードに失敗するのはなぜですか?

Linda Hamilton
リリース: 2024-11-24 17:43:12
オリジナル
608 人が閲覧しました

Why Do My Django Fixtures Fail to Load with Contenttype Conflicts in MySQL?

複数のアプリケーション コンテンツ タイプによる Django フィクスチャのロードの問題

Django フィクスチャを MySQL データベースにロードしようとすると、コンテンツ タイプの競合が発生する可能性があります。この問題は、対象のアプリケーションが他のアプリのテーブルに依存していることが多いため、特定のアプリケーションからデータを分離しようとすると発生します。

これを解決するには、一般に、必要なテーブルがすべて揃うまで、dumpdata コマンドに追加のアプリを含めることをお勧めします。が考慮されます。ただし、この場合、「fixture.json」ファイルは生成されますが、データをテスト フィクスチャとしてロードしようとすると、主キー値の競合により制約違反が発生します。

Django のドキュメントでは、 contenttypes アプリでは、これをすでに実行していることを示します。 Django 問題トラッカーで提供されている推奨回避策では、この問題には対処していないようです。

この問題に対する考えられる解決策の 1 つは、dumpdata コマンドを使用するときに「--natural」フラグを利用することです。そうすることで、Django は、「自然キー」とも呼ばれる、より耐久性の高い形式を使用して外部キーを表現します。たとえば、「Permission.id」の代わりに「Permission.codename」が使用され、「User.id」の代わりに「User.username」が使用されます。

「--natural」フラグの使用外部キーのより堅牢な表現が保証され、フィクスチャをロードする際の競合を解決できます。

以上がMySQL で Contenttype の競合により Django フィクスチャのロードに失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート