发生了什么:
我有一个名为应用程序的应用程序,其迁移最高为0012。 我错误地删除了迁移文件,包括0001_Initial.py。 现在,当我运行python manage.py makemigrations应用程序时,即使我对模型进行了更改,也未检测到新的迁移文件。 即使在一个名为注释的新创建的应用程序中,此问题仍在持续存在,尽管在模型中添加了新字段,但仍未检测到迁移文件。 我尝试的是:我确保该应用在installed_apps中列出。 我运行了Python Manage.py Makemigrations应用程序来生成迁移文件,但是未检测到更改。 我无法删除数据库,因为这是一个生产环境,我需要保留现有的帖子和数据。 我需要帮助:
我需要弄清楚如何在而不会丢失任何生产数据的情况下正确重置或重新同步迁移。 目前,我使用Init的空迁移文件夹。不创建任何迁移文件。 具体来说,我如何: 手动删除文件后重新创建丢失的迁移(即,匹配数据库的状态,该状态仍然应用到0012的迁移)。 确保正确检测到任何新应用程序或更改模型并具有相应的迁移文件。 我已经检查了以下内容:
installed_apps设置包含相关的应用程序。 试图使用 - 运行的同步无济于事。 我已经尝试使用 - empty和-verbosity 3尝试了makemigrations命令,但这无济于事。 compers任何建议在不影响生产数据的情况下解决此问题的任何建议将不胜感激! 在生产环境中,删除迁移文件使过程变得更加复杂。我建议您首先检查Django是否正在管理您的数据库表
。这默认为true,但请注意,如果您可能使用inspectdb
class MyModel(models.Model):
pass
class Meta:
managed = True
python manage.py showmigrations
以检查是否在django_migrations
表中存在这些已删除的文件以及已应用了哪些迁移。应用迁移由[x]标记,然后运行
python manage.py makemigrations <app_name>
commands.如果Django在执行上述内容后仍未检测到模型的更改,则可以使用python manage.py migrate
FLAG手动重新创建迁移文件,该标志为指定的应用程序输出空迁移,以进行手动编辑。请注意,这是针对高级用户的,除非您熟悉迁移格式,迁移操作以及迁移之间的依赖关系,否则不应使用:
--empty
,您可以从版本控制系统恢复迁移文件并应用迁移。