Django CommandError: 应用 'polls' 有迁移文件
我正在按照这个Django项目的教程进行操作。
我遇到的问题是,当我执行命令:
python manage.py sql polls
时,出现了这个错误:
CommandError: 应用 'polls' 有迁移。只有在应用有迁移时,才能使用 sqlmigrate 和 sqlflush 命令。
到目前为止,我在网上或者这个网站上找不到任何解决这个问题的指南。
5 个回答
在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
在django 1.7中,不需要直接删除应用程序的migrations文件夹。你可以在你的网站的MIGRATION_MODULES设置里,把应用程序的名字改成一个不存在的模块名,只需要在后面加上一些无关紧要的字符串,比如:
MIGRATION_MODULES['my_app'] += '_xx'
这样做之后,运行manage.py sqlclear my_app就可以正常工作了。
简单来说,就是删除文件夹 app-name/migrations
。
在 Django 1.7
和 Python 3.4
版本中,我找到的解决办法就是删除这个文件夹,之后一切都正常了。
你可以先运行 python manage.py makemigration
,然后再运行 python manage.py migrate
,或者你也可以直接删除迁移文件夹。
问题在于你正在使用 Django 1.8
,而你参考的是 1.6 版本的教程。注意一下这个教程开头的几句话:
这个教程是为 Django 1.6 和 Python 2.x 写的。如果你的 Django 版本不一样,可以通过页面右下角的版本切换器找到适合你 Django 版本的教程,或者把 Django 更新到最新版本。
在你的情况下,你可以选择降级到 1.6 版本,或者使用当前 1.8 版本的开发教程。