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

本地部署Strapi+PostgreSQL遇SSL不支持错误求解决方案

解决Strapi本地连接PostgreSQL时的SSL不支持错误

错误信息

Error: The server does not support SSL connections

    at Socket.<anonymous> (C:\Users\User\Desktop\Progect\CMS\node_modules\pg\lib\connection.js:87:35)
       at Object.onceWrapper (node:events:632:26)
       at Socket.emit (node:events:517:28)
       at Socket.emit (node:domain:489:12)
      at addChunk (node:internal/streams/readable:335:12)
      at readableAddChunk (node:internal/streams/readable:308:9)
       at Readable.push (node:internal/streams/readable:245:10)
      at TCP.onStreamRead (node:internal/stream_base_commons:190:23)

排查与解决方案

1. 修正.env中的DATABASE_URL错误

你的.env里DATABASE_URL存在两处问题:

  • 变量赋值用了冒号: ,应改为等号=
  • 连接地址中的host未替换为实际本地IP,需改为127.0.0.1或localhost

修正后:

DATABASE_URL=postgres://postgres:12345@127.0.0.1:5432/CMS?sslmode=disable

2. 统一数据库配置变量名

database.ts中使用DATABASE_USER读取用户名,但.env里对应的变量是DATABASE_USERNAME,变量名不匹配会导致配置失效。修改database.ts中的对应字段:

module.exports = ({ env }) => ({
  defaultConnection: "default",
  connection: {
    client: "postgres",
    connection: {
      connectionString: env("DATABASE_URL"),
      host: env("DATABASE_HOST", "localhost"),
      port: env.int("DATABASE_PORT", 5432),
      database: env("DATABASE_NAME", "postgres"),
      user: env("DATABASE_USERNAME", "postgres"), // 修正变量名
      password: env("DATABASE_PASSWORD", "12345"),
      schema: env("DATABASE_SCHEMA", "public"),
      ssl: env.bool('DATABASE_SSL', false) // 用bool确保解析为布尔值
    },
  }
});

3. 强制关闭SSL连接(避免配置冲突)

由于connectionString优先级高于单独的host/port/user等配置,确保connectionString明确包含sslmode=disable,同时显式关闭SSL:

// database.ts
module.exports = ({ env }) => ({
  defaultConnection: "default",
  connection: {
    client: "postgres",
    connection: {
      // 直接使用带sslmode的连接字符串,覆盖其他SSL配置
      connectionString: `${env("DATABASE_URL")}?sslmode=disable`,
      // 或者放弃connectionString,单独配置所有参数
      host: env("DATABASE_HOST", "127.0.0.1"),
      port: env.int("DATABASE_PORT", 5432),
      database: env("DATABASE_NAME", "CMS"),
      user: env("DATABASE_USERNAME", "postgres"),
      password: env("DATABASE_PASSWORD", "12345"),
      ssl: false
    },
  }
});

4. 检查本地PostgreSQL的SSL配置

确认本地PostgreSQL未启用SSL:

  1. 找到PostgreSQL安装目录下的postgresql.conf文件
  2. 查找ssl参数,确保设置为ssl = off
  3. 重启PostgreSQL服务

5. 清理依赖后重新安装

依赖缓存或版本兼容问题可能导致异常,执行以下步骤:

  • 删除node_modules目录和package-lock.json文件
  • 运行npm install重新安装依赖
  • 确保pg版本与Strapi版本兼容(Strapi v4推荐使用pg 8.x及以上版本,回退到7.x需确认对应Strapi版本的兼容性)

内容的提问来源于stack exchange,提问作者Максим

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:23:22