Django 1.7 - 应用 'your_app_name' 没有迁移文件

21 投票
5 回答
26063 浏览
提问于 2025-05-01 05:58

我正在尝试把我的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

请确保以下几点:

  1. 确认 'app_name.apps.AppNameConfig' 已经添加到已安装应用的列表中。
  2. 仔细检查项目的数据库配置,看看 settings.py 文件里的设置是否正确。
  3. 确保每个应用都有一个名为 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 文件是不够的。

撰写回答