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

Flask部署Heroku数据库遇psycopg2截断错误,改字段类型后仍报错

问题解决:Heroku部署后数据库字段长度错误未消失

核心原因

你只修改了代码里的模型定义,但Heroku上的PostgreSQL数据库结构没有同步更新,依然保留着原有的password VARCHAR(80)约束,所以插入哈希密码时还是会触发长度截断错误。

解决步骤

1. 本地生成并应用迁移脚本

确保本地通过Flask-Migrate生成结构变更的迁移文件:

# 生成迁移脚本,备注修改说明
flask db migrate -m "modify password field type to TEXT"
# 将变更应用到本地数据库(验证正确性)
flask db upgrade

2. 提交迁移文件到版本库

把migrations文件夹下新增的迁移脚本(通常是versions目录里的新py文件)提交到GitHub:

git add migrations/
git commit -m "add migration for password field type change"
git push origin main

3. 推送代码到Heroku并执行远程迁移

# 推送更新后的代码到Heroku
git push heroku main
# 在Heroku服务器上执行数据库迁移,更新远程数据库结构
heroku run flask db upgrade

4. 验证数据库结构(可选)

通过Heroku的psql命令查看远程数据库的表结构,确认password字段类型已改为TEXT:

# 进入Heroku的数据库终端
heroku run psql
# 查看user表的结构(表名默认是模型类名小写,即user)
\d user

额外注意事项

  • 确保Heroku的环境变量FLASK_APP已正确配置,否则flask db命令可能无法执行,可通过heroku config:set FLASK_APP=你的启动文件名.py设置
  • 如果之前从未在Heroku上执行过迁移,需要先初始化:heroku run flask db init(已使用Migrate则可跳过此步骤)

内容的提问来源于stack exchange,提问作者Dragynjump

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:21:17