为什么schemamigration --auto创建虚假迁移?

马丁·马克

我正在开发Django应用,遇到了一个奇怪的问题,涉及并行进行的2 South的迁移。

一种迁移对应于创建新模型(我们将其称为“ 0001_add_model”),第二种迁移对应于向现有模型中添加字段(我们将其称为“ 0001_add_new_field_to_model”)。现在,这2个迁移是在2个不同的分支中并行进行的(我不再赘述)。当我奔跑时./manage.py migrate,south告诉我这是一个问题,--merge无论如何我都可以运行命令来运行迁移。考虑到这两个动作涉及不同的模型,我虽然这样做应该没有问题,所以我做到了,一切顺利。

./manage.py schemamigration --auto从那时起,问题就出现了,它为我带来了与“ add_model”几乎相同的迁移,除了在“ add_field_to_model”中添加的字段。看起来像这样:

( * ) 0001_auto__add_model

( * ) 0001_auto__add_new_field_to_model

-> ( ) 0002_auto__add_model

如果我以相反的方式进行操作,则会生成相反的结果,即迁移以添加在“ add_field_to_model”中添加的字段。在这两种情况下,生成的新迁移显然都不适用,因为这些更改已存在于数据库中。

让我感到困惑的是为什么它会产生这种迁移。South的自动检测器如何工作以创建新的迁移?

为了继续进行开发,我要做的是使用进行这种虚假迁移--fake,但是我认为最终的解决方案是自那时以来重置迁移历史记录,这很麻烦,因为它已在多个环境中进行了复制。

布鲁诺·德斯胡里尔斯

问题来自“冻结”模型状态,前两次迁移之间状态不一致。如果查看迁移文件,您会看到Migration该类具有一个models属性,属性是生成迁移时模型的“冻结”表示。然后,South使用此表示形式(最后一个应用的迁移文件中的那个表示形式)来检测更改并生成新的迁移。由于您的两个“ 0001_XXX”迁移具有不同的“冻结”模型,因此将针对模型的错误表示生成任何新迁移。

解决方案显然是models手动修复“ 0001_XXX”迁移

而且,是的,南端+并行分支机构可能会让人感到痛苦,但我无法看到南端无论如何如何可以更好地完成ATM。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么-1是虚假的?-对于(

来自分类Dev

为什么-1是虚假的?- 为了 (

来自分类Dev

Django为什么要为代理模型创建迁移文件?

来自分类Dev

为什么在Clojure中零不虚假?

来自分类Dev

为什么虚假对象的元组是真实的?

来自分类Dev

为什么添加迁移有时会创建重复的迁移?

来自分类Dev

为什么启用迁移失败?

来自分类Dev

为什么“创建”是异步的?

来自分类Dev

为什么“创建”是异步的?

来自分类Dev

为什么迁移不起作用,它也不会在 django 应用程序中创建迁移目录

来自分类Dev

为什么学说迁移会尝试在ManyToMany关系上创建2个表

来自分类Dev

Django 1.7迁移不会重新创建删除的表,为什么?

来自分类Dev

为什么以前删除的迁移会继续在laravel中创建模型而返回?

来自分类Dev

为什么Laravel 6.x的创建默认情况下,failed_jobs迁移

来自分类Dev

即使路由器不允许迁移,为什么仍创建django_migrations表?

来自分类Dev

为什么学说迁移会尝试在ManyToMany关系上创建2个表

来自分类Dev

为什么使用 MSsql 进行 Django 迁移提示成功,但无法创建表?

来自分类Dev

为什么div之间存在虚假的过度分隔?

来自分类Dev

为什么看似等效的SecurityManager代码会导致虚假异常?

来自分类Dev

NaN虚假吗?为什么NaN === false返回false

来自分类Dev

为使Puppeteer正常工作,为什么无头需要虚假?

来自分类Dev

创建表的Rails迁移是什么?

来自分类Dev

创建表的Rails迁移是什么?

来自分类Dev

为什么“ php artisan migration”命令会与我要创建的表一起创建迁移表?

来自分类Dev

为什么“ php artisan migration”命令会与我要创建的表一起创建迁移表?

来自分类Dev

为什么不创建死锁?

来自分类Dev

为什么创建CreateWebHostBuilder()函数?

来自分类Dev

为什么不创建表?

来自分类Dev

为什么线程创建失败?

Related 相关文章

  1. 1

    为什么-1是虚假的?-对于(

  2. 2

    为什么-1是虚假的?- 为了 (

  3. 3

    Django为什么要为代理模型创建迁移文件?

  4. 4

    为什么在Clojure中零不虚假?

  5. 5

    为什么虚假对象的元组是真实的?

  6. 6

    为什么添加迁移有时会创建重复的迁移?

  7. 7

    为什么启用迁移失败?

  8. 8

    为什么“创建”是异步的?

  9. 9

    为什么“创建”是异步的?

  10. 10

    为什么迁移不起作用,它也不会在 django 应用程序中创建迁移目录

  11. 11

    为什么学说迁移会尝试在ManyToMany关系上创建2个表

  12. 12

    Django 1.7迁移不会重新创建删除的表,为什么?

  13. 13

    为什么以前删除的迁移会继续在laravel中创建模型而返回?

  14. 14

    为什么Laravel 6.x的创建默认情况下,failed_jobs迁移

  15. 15

    即使路由器不允许迁移,为什么仍创建django_migrations表?

  16. 16

    为什么学说迁移会尝试在ManyToMany关系上创建2个表

  17. 17

    为什么使用 MSsql 进行 Django 迁移提示成功,但无法创建表?

  18. 18

    为什么div之间存在虚假的过度分隔?

  19. 19

    为什么看似等效的SecurityManager代码会导致虚假异常?

  20. 20

    NaN虚假吗?为什么NaN === false返回false

  21. 21

    为使Puppeteer正常工作,为什么无头需要虚假?

  22. 22

    创建表的Rails迁移是什么?

  23. 23

    创建表的Rails迁移是什么?

  24. 24

    为什么“ php artisan migration”命令会与我要创建的表一起创建迁移表?

  25. 25

    为什么“ php artisan migration”命令会与我要创建的表一起创建迁移表?

  26. 26

    为什么不创建死锁?

  27. 27

    为什么创建CreateWebHostBuilder()函数?

  28. 28

    为什么不创建表?

  29. 29

    为什么线程创建失败?

热门标签

归档