如何解决TypeORM连接本地SQL Server的自签名证书错误?
解决TypeORM连接本地SQL Server自签名证书错误的方案
排查要点与修复步骤
1. 修正trustServerCertificate的配置层级
TypeORM 0.3.x版本中,针对mssql的配置参数trustServerCertificate无需嵌套在options对象内,需直接放在数据源配置的顶层。原配置的层级错误导致该参数未生效,修改后的完整配置如下:
import { DataSource } from 'typeorm'; export const AppDataSource = new DataSource({ type: "mssql", entities: [ "dist/**/*.entity{.ts,.js}", ], migrationsTableName: "migrations_history", migrations: [ "dist/src/migrations/*{.ts,.js}", ], synchronize: false, logging: true, database: "MyDb", port: 1433, host: "localhost", username: "MyUserName", password: "MyPassword", encrypt: true, trustServerCertificate: true, // 移至顶层,取消options嵌套 });
2. 清除缓存并重启应用
旧配置缓存可能导致修改不生效,执行以下操作:
- 删除项目根目录下的
dist文件夹,重新编译代码 - 重启NestJS应用,确保新配置被正确加载
3. 验证SQL Server证书配置
若问题仍存在,检查本地SQL Server的证书设置:
- 打开SQL Server配置管理器,找到SQL Server网络配置 -> MSSQLSERVER的协议
- 右键点击TCP/IP,选择属性 -> 证书标签,确认自签名证书状态正常
- 若证书异常,可尝试重新生成SQL Server自签名证书
4. 排查版本兼容性
当前TypeORM 0.3.17与mssql 9.3.2理论兼容,若问题持续,可尝试:
- 将mssql版本降级至9.2.x
- 升级TypeORM至最新稳定版,排除版本适配问题
内容的提问来源于stack exchange,提问作者François
相关产品推荐
相关产品推荐

