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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:27:18