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

在Google App Engine上通过Strapi连接Postgres数据库失败求助

Google App Engine连接Cloud SQL Postgres数据库失败问题

我按照Strapi官方部署文档操作,在Google App Engine上部署Strapi时,始终无法连接到Google SQL Postgres数据库,报错如下:

2022-09-27 16:11:32 default[20220928t020816]  [2022-09-27 16:11:32.307] debug: ⛔️ Server wasn't able to start properly.
2022-09-27 16:11:32 default[20220928t020816]  [2022-09-27 16:11:32.309] error: connect ECONNREFUSED /cloudsql/project-id:us-central1:database-id/.s.PGSQL.5432

我的database.ts配置如下:

export default ({ env }) => ({
  connection: {
    client: 'postgres',
    connection: {
      host: env('DATABASE_HOST', '127.0.0.1'),
      port: env.int('DATABASE_PORT', 5432),
      database: env('DATABASE_NAME', 'database-id'),
      user: env('DATABASE_USERNAME', 'strapi'),
      password: env('DATABASE_PASSWORD', 'strapi'),
      ssl: env.bool('DATABASE_SSL', false),
    },
  },
});

app.yaml配置如下:

runtime: nodejs16

instance_class: F1

env_variables:
  ADMIN_JWT_SECRET: 'XXXXXXXXXXXXX'
  API_TOKEN_SALT: 'XXXXXXXXXXXXX'
  APP_KEYS: 'XXXXXXXXXXXXX'
  DATABASE_HOST: '/cloudsql/project-id:us-central1:database-id'
  DATABASE_PORT: '5432'
  DATABASE_NAME: 'database-id'
  DATABASE_USERNAME: 'postgres'
  DATABASE_PASSWORD: 'XXXXXXXXXXXXX'
  DATABASE_SSL: 'false'
  HOST: '0.0.0.0'
  JWT_SECRET: 'XXXXXXXXXXXXX'
  NODE_ENV: 'production'
  PORT: '1337'

beta_settings:
  cloud_sql_instances: 'project-id:us-central1:database-id'

排查与解决步骤

  • 验证Cloud SQL权限与区域

    • 确认App Engine默认服务账号([你的项目ID]@appspot.gserviceaccount.com)已被授予Cloud SQL客户端角色,可在IAM控制台中配置。
    • 确保Cloud SQL实例与App Engine部署在同一区域(配置中为us-central1),跨区域连接可能导致连接失败。
  • 调整database.ts的套接字连接配置
    使用Unix套接字连接Cloud SQL时,需将host替换为socketPath,且无需指定port参数,修改后的配置如下:

    export default ({ env }) => ({
      connection: {
        client: 'postgres',
        connection: {
          socketPath: env('DATABASE_HOST'),
          database: env('DATABASE_NAME', 'database-id'),
          user: env('DATABASE_USERNAME', 'postgres'),
          password: env('DATABASE_PASSWORD'),
          ssl: env.bool('DATABASE_SSL', false),
        },
      },
    });
    
  • 核对app.yaml配置准确性

    • 确认beta_settings.cloud_sql_instances的值与DATABASE_HOST中的实例路径完全一致,无拼写错误。
    • 检查DATABASE_USERNAME和DATABASE_PASSWORD与Cloud SQL实例中设置的账号信息匹配。
  • 确认依赖包完整性
    确保项目依赖中包含pg包(PostgreSQL客户端),可在package.json中查看,若缺失则执行npm install pg --save-prod安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:45:56