IntegrityError:(1062、「キー2のエントリ「3-add_author」が重複しています」)
質問
データベースは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で導入されました。