Django 1.7 - 应用 'your_app_name' 没有迁移文件
我正在尝试把我的Django从1.6.7升级到1.7.1,所以我在迁移我的应用。
我按照Django的文档进行了操作。
我把south从我的已安装应用中删除了。
在迁移目录里,我删除了编号的迁移文件和.pyc文件,但保留了目录和__init__.py文件。
然后我运行了:
python manage.py makemigrations your_app_name
我收到了以下确认信息:
Migrations for 'your_app_name':
0001_initial.py:
- Create model UserProfile
接下来我运行:
python manage.py migrate your_app_name
我收到了以下错误:
CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps)
根据文档,我还运行了:
python manage.py migrate --fake your_app_name
我收到了同样的错误信息:
CommandError: App 'your_app_name' does not have migrations (you cannot selectively sync unmigrated apps)
有没有人能告诉我为什么这对我不起作用?
5 个回答
0
请确保以下几点:
- 确认 'app_name.apps.AppNameConfig' 已经添加到已安装应用的列表中。
- 仔细检查项目的数据库配置,看看
settings.py
文件里的设置是否正确。 - 确保每个应用都有一个名为
migrations
的文件夹,并且在这个文件夹里有一个叫__init__.py
的文件。
3
再提一个可能的原因:
在我的Django应用中,我添加了正确的迁移文件,并用pip安装了这个应用,但还是遇到了同样的错误。
我缺少的是一个正确的MANIFEST.in文件。此外,setup.py文件中的include_package_data
参数没有设置为True
。
9
你的应用程序必须包含一个 models.py
文件(即使是空的也可以)。
来源: https://groups.google.com/forum/#!msg/django-users/bsTZEmxgDJM/wH0p3xinBWIJ
16
如果你只有一个应用程序,直接运行 migrate 而不指定应用或迁移,可能会成功。
如果这样做有效,首先要检查的是你的应用名称是否和你在 settings.py 文件中的 INSTALLED_APPS 部分写的一致。
正如评论中提到的,应用名称可以是 [父应用].[应用名称] 的形式。在这种情况下,migrate 只需要 [应用名称] 就可以了。
31
我注意到,只有那些真正包含一个 migrations
文件夹,并且这个文件夹里有一个 __init__.py
文件的应用,才会被识别为有迁移功能。也就是说,单单在你的应用里有一个 models.py 文件是不够的。