【问题标题】:Django 1.8.5 migrations not workingDjango 1.8.5 迁移不起作用
【发布时间】:2018-06-12 14:10:15
【问题描述】:

我正在与另外两个开发人员一起开发一个带有 MySQL 数据库的 Django 1.8.5 应用程序。

我们对 models.py 进行了更改,现在我正在尝试运行迁移。当我运行python manage.py makemigrations 时,它返回“未检测到更改”。当我运行python manage.py migrate 时,它会返回:

Operations to perform:
  Synchronize unmigrated apps: webstack_django_sorting, staticfiles, 
debug_toolbar, messages, linaro_django_pagination, humanize, django_tables2
  Apply all migrations: admin, schools, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
 Running migrations:
  No migrations to apply.

按照其他帖子中的建议,我已尝试删除迁移文件/重置迁移,但在删除/重置后运行 makemigrationsmigrate 命令时没有任何变化。

我也尝试过python manage.py makemigrations app_name,但得到了相同的结果。

我团队中的另外两个开发人员已成功运行迁移命令。当他们运行python manage.py makemigrations 时,系统会提示他们重命名旧字段以匹配我们应用程序中两个模型中的新字段。我没有提示这个;正如我上面提到的,我被告知没有检测到任何变化。

我使用的是相同的代码;今天早上从 GitHub 上提取了它,我们确保我正在使用的是最新版本。它是。

当我在我的本地服务器上查看应用程序时,它应该没有出现任何内容,这表明数据库是空的。

还有什么可以尝试的想法吗?

【问题讨论】:

  • 为什么您从 GitHub 提取的代码中没有迁移本身?他们应该是。个人开发人员不应迁移已提交的代码。
  • 您是否对模型进行了更改?这通常发生在其他人已经提交迁移而 django 认为它已经迁移时。如果您通过删除迁移文件来重置它们,那么您还需要从“django_migrations”表中的数据库中删除迁移记录。

标签: python django


【解决方案1】:

在 django 1.11 中我也发生了类似的事情,这是因为当我删除迁移文件并重置数据库中的迁移表时,我不小心删除了迁移文件夹中的 init 文件。

你应该有类似这样的东西,以便 django 可以创建新的迁移文件:

. . .
├── my_app
│   ├── admin.py
│   ├── admin.pyc
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── __init__.py
│   ├── models.py
│   ├── tests.py
├── manage.py
. . . 

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2023-03-14
    • 2012-09-08
    • 2020-04-07
    • 2017-06-18
    相关资源
    最近更新 更多