1

我用这个命令创建了一个夹具:

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格式。

先感谢您。

4

1 回答 1

1

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

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

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

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

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

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

于 2017-09-26T12:56:11.917 回答