Django部署Heroku遇OperationalError:posts_post表不存在求助
解决Django 4.1部署Heroku后
no such table: posts_post错误的方案 在Heroku环境中执行迁移命令
本地执行迁移不会同步到Heroku服务器,必须直接在Heroku上运行:heroku run python manage.py migrate执行后查看输出日志,确认
posts应用的迁移脚本已被成功应用(日志中会显示Applying posts.XXXX... OK)。确认迁移文件已提交到Git仓库
检查posts/migrations/目录下的所有迁移文件(包含__init__.py)是否已添加到Git并推送到Heroku:git add posts/migrations/ git commit -m "提交posts应用的迁移文件" git push heroku main若迁移文件未提交,Heroku服务器中没有对应的迁移脚本,执行
migrate也无法创建数据表。验证
posts应用已加入INSTALLED_APPS
打开项目根目录的settings.py,确认posts在INSTALLED_APPS列表内:INSTALLED_APPS = [ # 其他内置/第三方应用 'posts', ]未添加该应用的话,Django不会识别其模型,迁移过程也不会生成对应的数据表。
检查数据库配置是否正确
确保settings.py正确读取Heroku提供的数据库链接,避免使用本地SQLite(Heroku不支持SQLite持久化):import dj_database_url DATABASES = { 'default': dj_database_url.config(default='sqlite:///db.sqlite3') }若手动配置数据库,需确认使用的是Heroku分配的PostgreSQL数据库信息。
重置Heroku数据库(谨慎操作)
若上述方法均无效,可尝试重置数据库后重新迁移(此操作会清空所有数据,仅适用于测试环境或无重要数据的场景):heroku pg:reset DATABASE_URL heroku run python manage.py migrate
内容的提问来源于stack exchange,提问作者Prateek
相关产品推荐
相关产品推荐

