django.db.migrations.exceptions.InconsistentMigrationHistory:Migration ...在其依赖之前应用

时间:2018-03-07 14:21:43

标签: python django database-migration

我得到了这个例外:

myproject@aptguettler:~$ manage.py migrate
Traceback (most recent call last):
  File "/home/myproject/src/djangotools/djangotools/bin/manage.py", line 32, in <module>
    main()
  File "/home/myproject/src/djangotools/djangotools/bin/manage.py", line 29, in main
    execute_from_command_line()
  File "/home/myproject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/home/myproject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/myproject/local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/myproject/local/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/home/myproject/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 86, in handle
    executor.loader.check_consistent_history(connection)
  File "/home/myproject/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 292, in check_consistent_history
    connection.alias,
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration myapp.0029_bar is applied before its dependency myapp.0005_foo_squashed_0028_dynamic_year on database 'default'.

我的迁移:

                   name                    
-------------------------------------------
 0001_initial
 0002_...
 0003_...
 0004_...
 0005_foo
 0006_...
 0007_...
...
 0028_dynamic_year
 0029_bar
 0030_...

可能是什么原因?

1 个答案:

答案 0 :(得分:1)

我在队友的帮助下找到了原因。

他这样做了:

  1. 压缩迁移
  2. 生产部署和makemigrations
  3. 删除了迁移目录中的压缩python文件
  4. 我在我的(旧)开发系统中更新了git repo。然后make migrations提出异常。

    Django无法解决这个问题,因为已经应用了一些迁移,而有些迁移并没有,旧的压缩迁移文件不再可用。

    我采用了最简单的解决方案:我删除了我的开发数据库并从头开始创建它。