【问题标题】:Django migration delete and updateDjango迁移删除和更新
【发布时间】:2019-12-16 10:31:36
【问题描述】:

我已经有了一些迁移文件,我在模型中做了一些更改并做了

python manage.py makemigrations
python manage.py migrate

在 postgresql 表 django_migrations 之后有一行表明我已经应用了该迁移,我们称之为迁移A。 我删除了新生成的迁移文件(migrationA),在我的模型中修改了一小块然后做了

python manage.py makemigrations
python manage.py migrate

这会产生迁移B。我希望这可以与压缩迁移文件一样。

这样的流程会不会造成麻烦?我现在没有看到任何麻烦,但想确保这是一种安全的做事方式。另外,有什么办法可以让postgresql恢复到我申请migrationA之前的时间?

【问题讨论】:

    标签: django django-migrations


    【解决方案1】:

    是的,这会引起麻烦。所有迁移都存储在迁移表中,仅删除迁移会导致您的实际迁移与记录的内容不一致。

    在删除迁移并创建新迁移之前,您需要先通过运行./manage.py migrate my_app number_previous_migration_name 将其还原。

    【讨论】:

    • 有什么我现在可以修复的吗?我已经删除了 migrationA 文件。
    • 您可以尝试使用--fake 标志重置迁移,或者删除您从数据库中的django_migrations 表中删除的迁移。
    • 从django_migrations表中删除时,是只删除应用迁移的历史记录,还是同时删除应用迁移的影响?
    • 只有记录,运行./manage.py showmigrations可以看到迁移列表
    • 抱歉再次询问,但是为什么要从django_migrationstable 中删除migrationA 记录来解决?
    猜你喜欢
    • 2018-12-15
    • 2016-10-02
    • 2020-01-19
    • 2017-05-13
    • 2016-12-16
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多