Django 1.7 makemigrations 没有效果

Posted

技术标签:

【中文标题】Django 1.7 makemigrations 没有效果【英文标题】:Django 1.7 makemigrations not having an effect 【发布时间】:2015-01-18 20:20:26 【问题描述】:

我一直在我的 heroku 服务器上运行 python manage.py makemigrations,但无论我运行多少次,我都会得到:

$heroku run python manage.py makemigrations
Running `python manage.py makemigrations` attached to terminal... up, run.2680
Migrations for 'default':
  0002_auto_20141120_2007.py:
    - Alter field user on usersocialauth

如果我运行heroku run python manage.py migrate

它回来了:

Running `python manage.py migrate` attached to terminal... up, run.1285
Operations to perform:
  Synchronize unmigrated apps: baflist_core, rest_framework, localflavor, storages
  Apply all migrations: admin, userAccount, contenttypes, sessions, default, location, messaging, forum, auth, posts
Synchronizing apps without migrations:
  Creating tables...
  Installing custom SQL...
  Installing indexes...
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

诚然,我对 postgres 和迁移的了解只够危险,所以我想我会在这里问。有没有人遇到过这种情况?

【问题讨论】:

您不应该在服务器上运行 makemigrations。本地运行,将创建的迁移文件添加到git,推送,heroku会自动为你运行迁移 【参考方案1】:

本地迁移完成后,<your django app>/migrations 文件夹 Ex 中应该有迁移文件(restapi 是我的 django 应用程序):

/Django/app/folder/restapi/migrations$ ls
0001_initial.py  0001_initial.pyc  __init__.py  __init__.pyc

所以你应该手动提交迁移文件:

heroku$ git commit restapi/migrations/0001_initial.py -m "migrations file"
heroku$ git push heroku master

注意:没有 heroku 不会自动在您的应用程序上运行迁移!我已经检查过了! 推送文件后,您应该为您的应用运行迁移:

heroku$ heroku run python manage.py migrate restapi 运行python manage.py migrate restapi 附加到终端...向上,运行.4602 要执行的操作: 应用所有迁移:restapi 运行迁移: 正在应用restapi.0001_initial...OK

【讨论】:

感谢您的回答。我在这个问题上摸不着头脑,因为我的设置文件反映了 heroku 设置,而且我还没有创建另一个开发设置文件来在本地运行东西然后推回 heroku。 +1!

以上是关于Django 1.7 makemigrations 没有效果的主要内容,如果未能解决你的问题,请参考以下文章

makemigrations 和升级到 Django 1.7 的问题

Django 1.7 makemigrations 将表重命名为 None

Heroku 上的 Django 1.7:如何让 makemigrations 重新扫描数据库?

Django 1.7 中的迁移

带有 Django 1.7 迁移的 Python 2.7 未绑定方法

Django:啥时候运行makemigrations?