如何通过Heroku CLI最简便地重置Django迁移?——解决“No installed app with label 'zero'”报错问题
嘿,我来帮你搞定这个迁移重置的问题!你之前的命令之所以报错,是因为语法顺序搞错啦——zero并不是应用标签,而是用来指定回滚到初始状态的参数,得放在应用名(或者--all)后面才行。
下面是在Heroku上重置Django迁移的最简步骤:
迁移重置完整流程(Heroku环境)
1. 回滚所有现有迁移到初始状态
如果你想把所有应用的数据库迁移都回滚到零(也就是清空所有表结构),用这条命令:
heroku run --app cyberminds-backend python manage.py migrate --all zero
要是只想重置单个特定应用(比如叫api),就把--all换成应用名:heroku run --app cyberminds-backend python manage.py migrate api zero
2. 清理迁移文件(可选但强烈推荐)
为了避免旧迁移文件干扰,先删除本地每个应用migrations文件夹里除了__init__.py之外的所有文件,然后推送到Heroku:
# 本地删除多余迁移文件 find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete # 提交修改并推送至Heroku git add . git commit -m "Clean up existing migration files" git push heroku main
3. 重新生成初始迁移
在Heroku上生成新的初始迁移文件:
heroku run --app cyberminds-backend python manage.py makemigrations
4. 执行新的迁移
最后重新创建数据库表结构:
heroku run --app cyberminds-backend python manage.py migrate
补充说明
你之前的命令heroku run python manage.py migrate --app cyberminds-backend zero之所以报错,是因为Django把zero当成了要操作的应用名称,自然找不到叫“zero”的应用,所以抛出了CommandError: No installed app with label 'zero'。记住migrate的正确语法是:migrate [app_label] [migration_name/zero],而--app是Heroku的参数,放在run后面或者命令开头都可以。
内容的提问来源于stack exchange,提问作者Teshie Ethiopia
相关产品推荐
相关产品推荐

