在Heroku仪表盘销毁数据库后,如何重新提交Django应用的数据库至Heroku?
彻底重置Heroku Django数据库的分步指南
我完全懂你现在的糟心处境——没做迁移就把代码推去生产环境,直接把Heroku数据库搞崩了,不过别慌,按下面的步骤一步步来,就能彻底重置并重新配置好:
1. 通过Heroku仪表盘销毁现有数据库
- 登录Heroku账号,进入出问题的应用页面
- 切换到Resources标签页
- 在Add-ons列表里找到你的数据库(一般是
Heroku Postgres),点击名称进入管理页面 - 跳转到Settings标签,找到Destroy Database选项,按提示确认销毁(注意:这一步不可逆,确保你完全不需要现有数据了)
2. 修复本地Django数据库配置(解决settings.DATABASES报错)
那个配置错误提示说明Heroku没法正确识别你的数据库设置,你得确保本地settings.py适配Heroku环境:
- 先确认安装了
dj-database-url包(没装的话,本地运行pip install dj-database-url,并把它添加到requirements.txt) - 修改
settings.py里的数据库配置部分,替换成:import os import dj_database_url # 保留本地开发的数据库配置(方便本地测试) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # 适配Heroku生产环境 if 'DATABASE_URL' in os.environ: DATABASES['default'] = dj_database_url.config(conn_max_age=600, ssl_require=True) - 保存修改后,把变更提交到Git:
git add settings.py requirements.txt git commit -m "Fix Heroku database configuration"
3. 重新部署代码到Heroku
把修复后的代码推送到Heroku:
git push heroku main
4. 重新添加数据库插件并执行迁移
- 给应用重新添加Heroku Postgres数据库(免费的hobby-dev tier足够测试使用):
heroku addons:create heroku-postgresql:hobby-dev - 确认数据库环境变量已正确设置:
能返回类似heroku config:get DATABASE_URLpostgres://xxx:xxx@xxx.amazonaws.com:5432/xxx的字符串就说明没问题 - 最后执行迁移,把本地模型同步到Heroku的新数据库:
(如果本地已经有heroku run python manage.py makemigrations heroku run python manage.py migratemigrations文件夹的迁移文件,也可以跳过makemigrations直接执行migrate,不会有问题)
5. 验证修复效果
- 启动Heroku应用进程:
heroku ps:scale web=1 - 访问你的应用URL,确认之前的配置错误消失,数据库相关功能正常工作
- 也可以通过shell验证模型是否能正常访问:
heroku run python manage.py shell # 导入你的模型测试,比如: from myapp.models import MyModel MyModel.objects.all()
这样操作下来,你的Heroku数据库就完全重置并和本地模型同步了,以后记得先在本地做好迁移测试,再推送到生产环境哦!
内容的提问来源于stack exchange,提问作者deadant88
相关产品推荐
相关产品推荐

