安装夹具时 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.10Python 3.5.2SQLite。我要加载的夹具是 JSON 格式。

提前谢谢你。

【问题讨论】:

【参考方案1】:

当我遇到同样的问题时,我偶然发现了这个问题。

这是一个可能的答案,可能只是一个理论,但我会解释原因。

Django 在加载与 SQLite 数据库上不是自动索引的主键的关系时遇到问题。

我遇到这个问题是因为我们采用的测试数据库策略是使用 SQLite 数据库,而不是像 Postgres 数据库这样的生产环境。我整天都在为完全相同的错误而烦恼。当我也为测试数据库切换到 Postgres 时,它最终不是问题。这里可能存在更大的问题。希望其他人可以提供更明确的答案。

我使用的是相同版本的 Django 和 Python 2.7

如果可能,您能否尝试将数据移动到 Postgres 等效项并加载它。如果这确实有效,则意味着您的数据没有错,并且 SQLite 和 Django 的关系存在问题。

【讨论】:

以上是关于安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id的主要内容,如果未能解决你的问题,请参考以下文章

安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误

带有自定义用户模型加载夹具错误的 Django 项目

(Django) 安装夹具“rules.json”时出现问题:“NoneType”对象没有属性“id”

加载夹具时 django unittest 出错

不使用固定装置的 Django 1.10 种子数据库

django 1.10 已安装应用程序列表