【问题标题】:Django 2.2.4 - “No migrations to apply” when run migrate after makemigrationsDjango 2.2.4 - 在 makemigrations 之后运行 migrate 时“没有要应用的迁移”
【发布时间】:2019-08-28 19:11:58
【问题描述】:

我正在尝试在 python 3.7 中的 django 2.2.4 中进行迁移。 首先我尝试做makemigations:

python3 manage.py makemigrations

我明白了:

Migrations for 'main':
  main/migrations/0001_initial.py
    - Create model TutorialCategory
    - Create model TutorialSeries
    - Create model Tutorial

然后我尝试第二步:

python3 manage.py migrate

我明白了:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, main, sessions
Running migrations:
  No migrations to apply.

即使应该进行迁移。

我尝试删除我的迁移文件夹,然后重新制作它(其中包含空的 __init__.py 文件),但它仍然不起作用。

(注意:我一直在学习教程:Linking models with Foreign Keys - Django Web Development with Python p.9 by sentdex)

【问题讨论】:

  • 这一切都在本地运行吗?例如,不在 Heroku 上?
  • 是的,它在本地运行。

标签: python django makemigrations


【解决方案1】:

我在 django 2.2 中遇到了同样的问题,以下对我有用...

  1. 删除位于应用文件夹内的迁移文件夹
  2. 也删除 pycache 文件夹
  3. 重新启动服务器 [如果您的服务器已打开并且您正在从另一个 cli 工作]
  4. python manage.py makemigrations <app_name> zero
  5. python manage.py makemigrations <app_name> [显式 app_name 很重要]
  6. python manage.py migrate

【讨论】:

  • 在命令上:"python manage.py makemigrations zero" 这个参数'zero'做什么?
  • @ProgramadoresBrasil 它只是重置所有迁移
【解决方案2】:

不知何故,您的迁移在数据库中被虚拟或伪造应用,截断 django_migrations 表应该可以工作。

  1. 删除所有迁移文件:

    找到 . -path "/migrations/.py" -not -name "init.py" -delete 寻找 。 -path "/migrations/.pyc" -delete

  2. 截断表:

    截断 django_migrations

  3. 进行迁移,迁移。

【讨论】:

  • 什么是“截断 django_migrations”?
  • @AlexM.M. truncate 是删除表 django_migrations 上的所有条目。
【解决方案3】:
  1. 我在 app 目录中删除了 pycachemigrations 文件夹,

  2. django.migrations 表中,我删除了 PostgreSQL 中所有这样的行

    DELETE FROM public.django_migrations
    WHERE public.django_migrations.app = 'target_app_name';
    
  3. 删除已为要从头开始创建的表创建的任何应用表。

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2019-06-23
    • 1970-01-01
    • 2019-02-13
    • 2021-04-19
    相关资源
    最近更新 更多