gpt4 book ai didi

django - 使用 Django South 重置迁移历史记录的推荐方法是什么?

转载 作者:行者123 更新时间:2023-11-29 12:27:44 25 4
gpt4 key购买 nike

我已经使用 South (0.7) 和 Django (1.1.2) 积累了相当多的迁移,它们开始在我的单元测试中消耗相当多的时间。我想重置基线并开始一组新的迁移。我已经查看了 South documentation ,完成了通常的 Google/Stackoverflow 搜索(例如“django south(重置或删除或删除)迁移历史记录”)并且没有发现任何明显的东西。

我考虑过的一种方法是通过“删除”South 或手动“清除”历史记录(例如清除数据库表、从迁移目录中删除迁移文件)来“重新开始”,然后重新运行,

./manage.py schemamigration southtut --initial

因此,如果有人以前做过这件事并且有一些提示/建议,他们将不胜感激。

最佳答案

如果您需要有选择地(仅针对一个应用程序)重置耗时过长的迁移,this为我工作。

rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations

不要忘记手动恢复任何 dependencies在其他应用程序上添加类似 depends_on = (("<other_app_name>", "0001_initial"),("<yet_another_app_name>", "0001_initial")) 的行给你的<app-dir>/migrations/0001_initial.py文件,作为迁移类中的第一个属性,位于 class Migration(SchemaMigration): 下方.

然后您可以 ./manage.py migrate <app-name> --fake --delete-ghost-migrations在其他环境中,根据 this SO answer .当然,如果你伪造删除或伪造 migrate zero您需要手动删除任何遗留的数据库表,并进行类似 this 的迁移.

一个更核的选项是./manage.py migrate --fake --delete-ghost-migrations在实时部署服务器上,然后是 [my]sqldump。然后在需要迁移的、完全填充的数据库的环境中将转储通过管道传输到 [my]sql 中。南方的亵渎,我知道,但对我有用。

关于django - 使用 Django South 重置迁移历史记录的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com