2011-06-22 31 views
24
私はdumpdataので作成したフィクスチャをロードすると、次の例外を取得しています

中にフィクスチャをロードする場合:IntegrityError Djangoのテスト

Problem installing fixture 'db_dump.json': Traceback (most recent call last): 
    File "/usr/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 174, in handle 
    obj.save(using=using) 
    File "/usr/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save 
    models.Model.save_base(self.object, using=using, raw=True) 
    File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 526, in save_base 
    rows = manager.using(using).filter(pk=pk_val)._update(values) 
    File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 491, in _update 
    return query.get_compiler(self.db).execute_sql(None) 
    File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 869, in execute_sql 
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
    File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py", line 234, in execute 
    return Database.Cursor.execute(self, query, params) 
IntegrityError: columns app_label, model are not unique 

これはsqlite3のバックエンドです。

更新:自然キーを使用しても違いはありません。

どういう意味ですか、なぜそれが起こっていますか?

答えて

47

不注意のトラップの1つは、フィクスチャをエクスポートするときにコンテントタイプを除外しなければならないことは明らかです。 (情報については#djangoのサブームに感謝します)。

コンテンツタイプを除外するには、dumpdataコマンドを実行するときに-eオプションを使用します。

$./manage.py dumpdata -e contenttypes > initial_data.json 
+1

うん、別のエンジンからのdevのDBSを移行するときにのみものの、その1で数回ヒットされて。テストフィクスチャの一般的なルールは、テスト中に何が起こっているのかを知るために、正確に何が入っているのかを知ることで、驚きはありません。 – eternicode

+7

このようなものは、私のために働いていました。(参考までに):./manage.py dumpdata -e contenttypes> initial_data.json –

+1

ありがとうございました – soField

9
python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json 
関連する問題