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

DigitalOcean App Platform部署Strapi未加载生产配置仍使用SQLite

Strapi 生产环境未加载Postgres配置排查方案

按出现概率从高到低依次排查:

  • 配置文件语法/导出规范错误
    Strapi v4默认项目采用CommonJS模块规范,如果你在/config/env/production/database.js里用了ESM的export default写法导出配置,文件会静默加载失败,直接回退到根目录的默认SQLite配置。
    正确的配置写法参考:

    const { parse } = require('pg-connection-string');
    
    module.exports = ({ env }) => {
      const dbConfig = parse(env('DATABASE_URL'));
      return {
        connection: {
          client: 'postgres',
          connection: {
            host: dbConfig.host,
            port: dbConfig.port,
            database: dbConfig.database,
            user: dbConfig.user,
            password: dbConfig.password,
            ssl: { rejectUnauthorized: false }, // DO托管Postgres必须加该SSL配置
          },
          debug: false,
        },
      };
    };
    

    注意路径是/config/env/production/database.js,不是envs(多写一个s是最高发的手滑错误),Linux运行环境对文件名大小写敏感,不要把database.js写成Database.js。排查时可以在配置文件里加一行console.log('>>> Production postgres config loaded'),部署后看运行日志有没有打印这行,没打印就说明文件根本没被加载,优先检查路径拼写、文件名大小写、导出语法。

  • Postgres客户端依赖缺失
    Strapi默认不带Postgres连接驱动,必须手动安装pg包:在本地项目根目录执行npm install pg --save,确认package.json的dependencies里有pg的版本记录后再提交代码部署。
    缺少该依赖时,Strapi加载Postgres配置会抛出warn级别的错误,很容易在构建日志里被忽略,之后自动回退到默认SQLite配置。

  • 环境变量作用域配置错误
    检查DigitalOcean App Platform上的DATABASE_URL变量配置:

    1. 确认变量值正确绑定了托管Postgres的完整连接串,不是拆分成的主机、端口、名单独变量
    2. 确认变量同时勾选了「构建时可用」和「运行时可用」,如果只配置了运行时变量,构建阶段Strapi读不到数据库配置,会直接用SQLite生成构建产物,后续运行阶段就算拿到变量也不会切换数据库客户端。
  • 根目录配置覆盖/缓存问题

    1. 检查根目录/config/database.js,如果文件里硬编码了SQLite配置,部分低版本Strapi存在配置合并bug,会把SQLite的client配置优先级提得比环境配置高,可以临时把根目录的数据库配置改成和生产环境一致的逻辑,排除覆盖问题
    2. 排除旧构建缓存影响:在DO App Platform控制台选择「清除缓存后重新部署」,旧的SQLite版本构建缓存可能会导致新配置不生效。

所有排查步骤做完后,正常部署的运行日志里会明确打印使用postgres客户端的记录,不会再生成本地SQLite数据库文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:03:25