我正在尝试使用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 :我正在尝试将数据加载到的数据库只是一个空文件。可能是问题吗?在从夹具加载之前,是否需要在新的数据库中创建相关表?
答案 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