You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Otree实验创建会话失败:数据库字段缺失求助

解决Otree上传Heroku后创建会话报错的问题

问题根源

报错提示otree_participant表缺少_gbat_is_connected列,核心原因是本地数据库结构和Heroku上的PostgreSQL未同步。本地使用SQLite时,Otree会自动适配模型变更,但Heroku的PostgreSQL必须手动执行数据库迁移来更新表结构。

一步步解决

1. 本地生成迁移文件

打开PyCharm终端,进入项目根目录,执行命令生成迁移脚本:

otree makemigrations

如果提示"No changes detected"但你确实修改了模型,可以指定你的app名称生成:

otree makemigrations 你的app名称

2. 本地验证迁移有效性

执行本地迁移,确保本地数据库结构匹配模型:

otree migrate

运行后本地测试正常,说明迁移文件无问题。

3. 推送迁移文件到Heroku

将生成的migrations文件夹(对应app目录下)加入Git版本控制:

git add 你的app目录/migrations/
git commit -m "添加_gbat_is_connected字段的迁移脚本"

推送到Heroku服务器:

git push heroku main

4. 在Heroku上执行迁移

通过Heroku CLI登录后,执行迁移命令更新远程数据库:

heroku run otree migrate

5. 验证问题是否解决

回到Heroku后台尝试创建会话,应该不会再出现字段不存在的报错。

额外提醒

  • 确保本地与Heroku使用的Otree版本一致,建议在requirements.txt中固定版本,例如:
    otree==5.10.0
    
  • 若迁移时出现冲突,可先备份Heroku数据库,再尝试重置数据库(会清除所有现有数据,谨慎操作):
    heroku run otree resetdb
    

内容的提问来源于stack exchange,提问作者Bénédicte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:50:31