Django 删除了迁移目录
Posted
技术标签:
【中文标题】Django 删除了迁移目录【英文标题】:Django deleted migrations directory 【发布时间】:2016-10-02 20:39:03 【问题描述】:在我的项目目录中,当我尝试更新我的代码时,我不小心删除了我的应用程序的迁移文件夹,现在我已经修改了模型,当我使用 python manage.py makemigrations
时,我收到以下消息:
Operations to perform:
Apply all migrations: app_label
Running migrations:
No migrations to apply.
我在迁移python manage.py makemigrations app_label
之前已经运行了这个
【问题讨论】:
你在使用版本控制吗?您可以重置/结帐回到您进行迁移的时间吗? @jonrsharpe 不幸的是,我在 VPS 上,但我仍然没有时间安装 git 服务器,并且我进行了迁移,但是由于某种原因,当我将它们放在服务器上时,它们给了我错误表存在 这就是为什么你要花时间先安装它! @jonrsharpe 好的,现在你的解决方案是什么? 【参考方案1】:您可以将迁移重置为初始 migrate
之前的状态,然后重新开始。这不会删除数据库中的数据,而是重置您的迁移跟踪。如果您的所有数据库都已迁移到同一级别,那么您可以重新开始迁移跟踪。
这里有一个 *** 问题已经解决了:
How to reset migrations in Django 1.7?
总之,
./manage.py migrate --fake <app-name> zero
这会将跟踪重置到您的初始迁移之前。
然后,
./manage.py makemigrations <app-name>
./manage.py migrate <app-name>
这会重新创建初始迁移并应用它。
与往常一样,如果您的数据很重要,请先进行备份。
【讨论】:
我其实需要数据库里的数据 我已经更新了我的答案。重置迁移不会重置数据库。 运行上面给出的命令后,我收到了这条消息,实际上没有发生任何其他事情Running migrations: Rendering model states... DONE Unapplying app_label.0001_initial... OK
现在抛出这个异常 关系“app_label_something”不存在
您现在应该可以像开始时一样继续操作了。【参考方案2】:
只需在您的应用目录中创建名为迁移的新目录。
然后在该文件夹中创建一个名为__pycache__
的空文件夹和一个名为__init__.py
的空文件。然后进行迁移并迁移
【讨论】:
以上是关于Django 删除了迁移目录的主要内容,如果未能解决你的问题,请参考以下文章