本地部署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:
- 找到PostgreSQL安装目录下的
postgresql.conf文件 - 查找
ssl参数,确保设置为ssl = off - 重启PostgreSQL服务
5. 清理依赖后重新安装
依赖缓存或版本兼容问题可能导致异常,执行以下步骤:
- 删除
node_modules目录和package-lock.json文件 - 运行
npm install重新安装依赖 - 确保
pg版本与Strapi版本兼容(Strapi v4推荐使用pg 8.x及以上版本,回退到7.x需确认对应Strapi版本的兼容性)
内容的提问来源于stack exchange,提问作者Максим
相关产品推荐
相关产品推荐

