Strapi部署至Heroku后每日数据丢失及重置问题求助
解决Heroku部署Strapi后数据每日丢失的问题
核心原因
Heroku的临时文件系统是问题关键:
- Heroku所有运行实例(dyno)的本地文件都是临时存储的,不管是每日自动休眠重启、重新部署还是资源调整,都会把本地文件重置回部署时的初始状态。
- Strapi默认用SQLite数据库,数据存在本地文件里,一旦dyno重置,这些数据自然就丢失了。
具体解决步骤
1. 切换到持久化远程数据库
必须换掉SQLite,改用Heroku支持的远程数据库,推荐PostgreSQL:
- 登录Heroku控制台,给你的应用添加「Heroku Postgres」插件;
- 修改Strapi的数据库配置文件(
config/database.js或者config/env/production/database.js),配置PostgreSQL连接:
module.exports = ({ env }) => ({ connection: { client: 'postgres', connection: { host: env('DATABASE_HOST', 'localhost'), port: env.int('DATABASE_PORT', 5432), database: env('DATABASE_NAME', 'strapi'), user: env('DATABASE_USERNAME', 'strapi'), password: env('DATABASE_PASSWORD', 'strapi'), ssl: env.bool('DATABASE_SSL', true), }, }, });
- 确保Heroku自动注入的数据库环境变量能被Strapi正确读取,或者手动在Heroku的「设置-配置变量」里填好上述参数。
2. 验证配置是否生效
- 部署后在Strapi后台加几条测试数据,然后手动重启Heroku实例(执行命令
heroku restart); - 重启后再登录后台,检查测试数据是否还在;
- 可以用
heroku logs --tail查看日志,确认数据库连接没有报错。
3. 可选:关闭自动休眠(仅缓解)
如果用的是Heroku免费套餐,30分钟无访问会自动休眠,唤醒时会重启dyno,这也会触发数据丢失(没换数据库的情况下)。升级到付费套餐能关闭自动休眠,但这只是缓解,换持久化数据库才是根本解决办法。
内容的提问来源于stack exchange,提问作者lestonz
相关产品推荐
相关产品推荐

