【问题标题】:Django migrations old database, forgot one model beforeDjango迁移旧数据库,之前忘记了一个模型
【发布时间】:2018-05-09 20:41:46
【问题描述】:

我有对 Django 的现有数据库/生产系统预迁移支持。我们确实在 2 年前开始使用 Django 迁移,结果发现我确实忘记为一个现在会导致问题的模型安装迁移。

2 年前我有以下型号;位置、工具和指向位置和工具实例的第三个日志。

Log 模型的 0001_inital.py 依赖于 0001_inital 的工具,但对于 Locations,它指向 _ first _

现在,今天我第一次尝试让 Location 使用迁移(这样我以后可以添加一些东西,现在需要)...

运行 makemigration Location 工作并生成一个新的干净迁移目录和所有文件,但是在执行 migrate --fake 时,我得到以下 django.db.migrations.exceptions.InconsistentMigrationHistory: Migration log.0001_initial 在其依赖位置之前应用。数据库“默认”上的 0001_initial。

了解这是由于我们开始在 Django 中使用它时忘记为 Locations 完成迁移而导致的错误 - 任何想法如何以一种好的方式解决这个问题?

【问题讨论】:

  • 尝试使用虚假迁移修复它:python manage.py migrate --fake appname migration_name。阅读documentation 以了解这是否适合您的情况。

标签: python django django-models database-migration


【解决方案1】:

解决了 - 这是怎么回事。

1) 重置日志的迁移历史

>> python manage.py migrate --fake log zero

2) 为 Location 创建第一个迁移(这是我们 2 年前忘记的)

>> python manage.py makemigrations locations 

3) 为 Log 编辑了 0001_initial.py,并将 Location 的依赖项中的引用从'_ first _' 更改为 '0001_initial'

4) 清除(如果有的话)位置迁移

>> python manage.py migrate --fake locations zero

5) 重新创建项目所有迁移历史

>> python manage.py showmigrations
>> python manage.py migrate --fake

6) 完成 - 通过尝试运行迁移来测试它是否可行

>> python manage.py migrate
No migrations to apply

:-)

【讨论】:

  • 我明白了你的想法。 InconsistentMigrationHistory: Migration student.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 2013-12-13
  • 2018-02-11
  • 2011-12-14
  • 2023-03-28
相关资源
最近更新 更多