Django CommandError: 应用 'polls' 有迁移文件

15 投票
5 回答
17334 浏览
提问于 2025-04-18 09:44

我正在按照这个Django项目的教程进行操作。

我遇到的问题是,当我执行命令:

python manage.py sql polls时,出现了这个错误:

CommandError: 应用 'polls' 有迁移。只有在应用有迁移时,才能使用 sqlmigrate 和 sqlflush 命令。

到目前为止,我在网上或者这个网站上找不到任何解决这个问题的指南。

5 个回答

0

在Django 1.8中,你需要运行另一个命令--makemigrations [你的应用名称]:

$ python manage.py makemigrations polls

你应该会看到类似下面的内容:

Migrations for 'polls':
  0001_initial.py:
    - Create model Question
    - Create model Choice
    - Add field question to choice
0

在django 1.7中,不需要直接删除应用程序的migrations文件夹。你可以在你的网站的MIGRATION_MODULES设置里,把应用程序的名字改成一个不存在的模块名,只需要在后面加上一些无关紧要的字符串,比如:

MIGRATION_MODULES['my_app'] += '_xx'

这样做之后,运行manage.py sqlclear my_app就可以正常工作了。

3

简单来说,就是删除文件夹 app-name/migrations

Django 1.7Python 3.4 版本中,我找到的解决办法就是删除这个文件夹,之后一切都正常了。

31

你可以先运行 python manage.py makemigration,然后再运行 python manage.py migrate,或者你也可以直接删除迁移文件夹。

18

问题在于你正在使用 Django 1.8,而你参考的是 1.6 版本的教程。注意一下这个教程开头的几句话:

这个教程是为 Django 1.6 和 Python 2.x 写的。如果你的 Django 版本不一样,可以通过页面右下角的版本切换器找到适合你 Django 版本的教程,或者把 Django 更新到最新版本。

在你的情况下,你可以选择降级到 1.6 版本,或者使用当前 1.8 版本的开发教程

撰写回答