Django - 来自JSON转储的loaddata给出“没有这样的表”错误

时间:2017-12-17 00:47:06

标签: python django sqlite

我正在尝试使用manage.py loaddata将我的Django Sqlite数据库的JSON转储加载到新的数据库中。我遇到了以下django.db.utils.OperationalError,但是:

Could not load foo.Bar(pk=1): no such table: foo_bar

该表肯定存在于数据库中,我的所有迁移都已应用,使用showmigrations进行检查。所以我很难知道发生了什么。但是,如果这很简单,我不会感到惊讶。非常感谢任何建议。

N.B :我正在尝试将数据加载到的数据库只是一个空文件。可能是问题吗?在从夹具加载之前,是否需要在新的数据库中创建相关表?

1 个答案:

答案 0 :(得分:0)

如果您仍在开发中,请尝试重置数据库。请注意,您的所有数据都会丢失。创建并转储一些新数据,并检查是否仍然出现相同的错误。

以下是如何重置数据库的脚本:

#!/usr/bin/env bash

#deletes the sqlite3 database
rm db.sqlite3

#deletes migration files of your module(s)
# __init__.py needs to be recreated
rm -R your_module/migrations/*
touch your_module/migrations/__init__.py

# migrates changes and synchronizes the database
python manage.py makemigrations && python manage.py migrate
python manage.py migrate --fake-initial
python manage.py migrate --run-syncdb