安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id
Posted
技术标签:
【中文标题】安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id【英文标题】:Django 1.10 raises error when installing fixtures: no such column: REFERRED.id 【发布时间】:2017-06-25 07:08:55 【问题描述】:我用这个命令创建了一个夹具:
python manage.py dumpdata --natural-primary --natural-foreign -e admin -e contenttypes -e auth.Permission --format=json --indent=2 --all > gc_core/fixtures/initial_data.json
然后我尝试在我的另一台机器上对其进行测试。所以我删除了我的数据库并在那里运行迁移:
./manage.py migrate
然后我尝试使用 loaddata 使用该夹具填充我的数据库:
./manage.py loaddata gc_core/fixtures/initial_data.json
然后 Django 引发这个错误:
django.db.utils.OperationalError: Problem installing fixtures: no such column: REFERRED.id
我不知道这意味着什么。我应该在某处有一个名为 REFERRED.id 的列吗?
我的夹具和数据库中都没有这样的列,我没有在我的任何应用程序中定义这样的模型。
那么什么是 REFERRED.id 以及如何修复它?
我正在使用 Django 1.10、Python 3.5.2、SQLite。我要加载的夹具是 JSON 格式。
提前谢谢你。
【问题讨论】:
【参考方案1】:当我遇到同样的问题时,我偶然发现了这个问题。
这是一个可能的答案,可能只是一个理论,但我会解释原因。
Django 在加载与 SQLite 数据库上不是自动索引的主键的关系时遇到问题。
我遇到这个问题是因为我们采用的测试数据库策略是使用 SQLite 数据库,而不是像 Postgres 数据库这样的生产环境。我整天都在为完全相同的错误而烦恼。当我也为测试数据库切换到 Postgres 时,它最终不是问题。这里可能存在更大的问题。希望其他人可以提供更明确的答案。
我使用的是相同版本的 Django 和 Python 2.7
如果可能,您能否尝试将数据移动到 Postgres 等效项并加载它。如果这确实有效,则意味着您的数据没有错,并且 SQLite 和 Django 的关系存在问题。
【讨论】:
以上是关于安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id的主要内容,如果未能解决你的问题,请参考以下文章
安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误