I'm loading a fixture created with dumpdata, and getting the following exception:
我正在加载一个用dumpdata创建的fixture,并得到以下异常:
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
This is with a sqlite3 backend.
这是一个sqlite3后端。
Update: Using natural keys doesn't make a difference here.
更新:使用自然键没有什么区别。
What does it mean, and why is it happening?
这是什么意思,为什么会发生?
2 个解决方案
#1
47
Apparently one of the traps for the unwary is that one must exclude contenttypes when exporting fixtures. (Thanks to subsume on #django for the information).
显然,对于不谨慎的人来说,其中一个陷阱是在导出固件时必须排除contenttype。(多亏了#django提供的信息)。
To exclude content types use the -e
option when running the dumpdata command.
要排除内容类型,请在运行dumpdata命令时使用-e选项。
$./manage.py dumpdata -e contenttypes > initial_data.json
#2
9
python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json
#1
47
Apparently one of the traps for the unwary is that one must exclude contenttypes when exporting fixtures. (Thanks to subsume on #django for the information).
显然,对于不谨慎的人来说,其中一个陷阱是在导出固件时必须排除contenttype。(多亏了#django提供的信息)。
To exclude content types use the -e
option when running the dumpdata command.
要排除内容类型,请在运行dumpdata命令时使用-e选项。
$./manage.py dumpdata -e contenttypes > initial_data.json
#2
9
python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json