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

基于Flask-base项目从SQLite迁移至Heroku PostgreSQL的问题

从SQLite迁移到Heroku PostgreSQL的实操指南(针对flask-base项目)

我之前也折腾过flask-base项目从SQLite迁到Heroku PostgreSQL的事儿,给你整理几个关键步骤和踩过的坑,应该能帮你推进:

1. 先把本地PostgreSQL测试环境的配置捋顺

首先确认config.py里测试环境的数据库URI配置是正确的,格式得是这样:

SQLALCHEMY_DATABASE_URI = 'postgresql://[你的PostgreSQL用户名]:[密码]@localhost:5432/test'

别偷懒省略用户名和密码,先手动用psql test登录本地库试试,确保能正常连接、创建表,这一步错了后面全白搭。

2. 用Flask-Migrate把迁移同步到本地PostgreSQL

既然已经有了SQLite的迁移文件,切换到测试环境执行迁移:

# Mac/Linux用export,Windows用set
export FLASK_APP=app/__init__.py
export FLASK_ENV=testing

# 执行迁移升级
flask db upgrade

跑完之后去本地PostgreSQL的test库查一下表结构,确保和SQLite里的一致,数据也能正常读写,先在本地把问题解决了再碰Heroku。

3. 把本地PostgreSQL的数据同步到Heroku

如果本地测试没问题,接下来把数据导到Heroku:

方法一:用pg_dump导出再导入

先导出本地库的SQL文件:

pg_dump -d test -f local_data_dump.sql

然后把这个文件导入到Heroku的数据库:

heroku pg:psql --app [你的Heroku应用名] < local_data_dump.sql

方法二:用Heroku的pg:push直接推送(更快捷)

heroku pg:push test DATABASE_URL --app [你的Heroku应用名]

这里的DATABASE_URL是Heroku自动给你配置的数据库环境变量,不用改,直接用就行。

4. 验证Heroku上的数据库状态

导入完成后,登录Heroku的数据库检查:

heroku pg:psql --app [你的Heroku应用名]

输入\dt看看所有表是否都存在,再查几条核心数据确认导入成功,比如SELECT * FROM users LIMIT 5;(如果有users表的话)。

我踩过的几个坑,给你提个醒

  • 字段类型不兼容:SQLite的字段类型比较宽松,比如BOOLEAN在PostgreSQL里是BOOL,如果迁移文件里用了SQLite特有的类型,可能会报错,得手动调整迁移文件里的字段定义。
  • 编码问题:如果导出导入时出现乱码,导出的时候加上编码参数:pg_dump -E UTF8 -d test -f local_data_dump.sql。
  • Heroku连接超时:如果数据量比较大,直接导入可能超时,可以把SQL文件分成小份,或者用Heroku的pg:copy工具分批导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:25:42