Fixture/South导致我的数据库在删除i后无法重新加载

2024-04-29 08:08:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次尝试南方赛程,所以希望这是件容易的事。在

我使用dumpdata命令将其作为json转储。我把它放在我的initial_data.json文件中,设置fixtures目录,然后继续我的工作。同时,我也设置了我最初的南迁,但我不确定这是否对这里有影响。我决定要测试它,所以我完全放弃了我的数据库并运行manage.py syncdb来查看它是否能够正确加载。发生这种情况时,数据库中的大量表没有被创建,syncdb抛出一个错误:

> django.db.utils.ProgrammingError: Problem installing fixture
> '/Users/jim/dev/testapp/testing/fixtures/initial_data.json': Could not
> load booker.Position(pk=1): (1146, "Table 'testing.booker_position'
> doesn't exist")

这是怎么回事?为什么fixture会阻止我的表被创建,为什么这个不起作用?在


Tags: 文件命令目录数据库jsondatamanagetesting
2条回答

如果您DROP DATABASE,但是应用程序/项目中仍然有South迁移,那么您将得到错误,因为数据库更改的历史记录在迁移中。在

如果您希望重新加载表,最好的方法是删除数据库迁移(每个应用程序中的South Migration文件夹),然后重新-syncdb并再次使用South执行初始的schemamigration。在

将整个数据库转储并使用Django的fixtures实用程序重新加载到其他地方是一件非常棘手的事情。Django的syncdb命令和South的初始迁移已经为您创建了一堆表,因此您必须先删除这些表,然后才能继续。在这个特定的示例中,您需要连接到数据库并运行

delete from south_migrationhistory;

祝你好运。在

相关问题 更多 >