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

标签 django django-south

我已经使用 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/

相关文章:

Apache VirtualHost 后面带有 WSGI 的 Django 给出 404

django admin可调用readonly_field详细名称

python - Django/South 在 python manage.py schemamigration testapp --initial 上设置失败

sqlalchemy - 没有数据库的 Alembic 迁移

python - Facebook 身份验证 : server-side versus client-side. Python/Django

python - 如何允许用户在没有 super 用户身份的情况下修改其他用户详细信息? ( Django /Python)

django - 检查用户是否已使用社交帐户登录 - Django

django - 如何以正确的方式重命名 django-south 中的外键

mysql - 我怎样才能在 MySQL 中有涉及 ForeignKey 字段的 unique_together 约束?

django - 使用多个数据库时出现南错误 : django. db.utils.ConnectionDoesNotExist:连接 foo 不存在