IntegrityError:(1062、「キー2のエントリ「3-add_author」が重複しています」)

StackOverflow https://stackoverflow.com/questions/7384689

  •  29-10-2019
  •  | 
  •  

質問

データベースはMySQLです。

Django.Contrib.Auth。

これはすべての情報です:

Manage.py DumpData Auth> my_auth.json --natural --exclude contentTypes

その後、データベース全体(DRAP DATABASE MY_DATABASE)を削除し、新しいデータベースを作成しました(データベースNew_Databaseを作成)(すべてのテーブルを作成するには./manage.py syncdbを使用)。

それから

Manage.py loaddata my_auth.json

エラーが発生しました:

IntegrityError:(1062、 "leplet 2-add_author 'for key 2")

問題は何ですか?

あらゆる助けが大いに感謝されます。ありがとうございました!

役に立ちましたか?

解決

(更新)

その通りです(以下のコメントを参照してください)。問題は確かにauth.permissionにあります。

syncdbを実行すると、auth.permissionのデフォルト値が自動的に入力されます。インストールされているすべてのモデル。その後syncdbを実行すると、最近追加されたモデルの新しいエントリが追加されます。

後の段階でデータベースをリセットしてsyncdbを再度実行すると、値が再入力され、インストールされたモデルが検査される順序に応じて、関連付けられたアクセス許可が異なる順序で追加され、以前のデータベース(モデルが段階的にインストールされた場合)。

この問題を回避するには、auth.permissionデータをダンプするときにauthを除外するか(コメントですでに指摘しているように)、データダンプをロードする前にauth.permissionテーブルをリセットします。

また、自然キーを使用することも重要です。 (--natural)データをダンプして、整数IDを使用して関連データを参照しないようにする場合(別のデータベースにロードした場合は同じでない場合があります)。この機能は、 Django1.2で導入されました

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top