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

升级JDBC 12.10.0.jre11后Spring Boot连接SQL Server时trustServerCertificate配置失效

解决思路

1. 调整连接池参数传递方式(优先排查)

Spring Boot默认使用HikariCP作为数据源连接池,高版本SQL Server JDBC驱动可能需要通过连接池的专属配置传递SSL参数,而非仅靠URL拼接。试试在application.properties里添加:

spring.datasource.hikari.data-source-properties.trustServerCertificate=true
spring.datasource.hikari.data-source-properties.encrypt=true

同时可以把URL里的SSL参数删掉,避免冲突:

spring.datasource.url=jdbc:sqlserver://MY-LAPTOP;database=TL-RMDB;integratedSecurity=true

2. 排查配置是否被意外覆盖

检查有没有以下情况导致配置失效:

  • 其他环境配置文件(比如application-dev.properties)里的同名参数覆盖了当前设置
  • 启动应用时用命令行参数、环境变量重写了数据源URL,没带上trustServerCertificate=true
  • JVM启动参数里有-Dspring.datasource.*这类配置,覆盖了原参数

3. 验证驱动与SQL Server版本兼容性

JDBC驱动12.x版本要求SQL Server最低为2016版本,如果你的数据库是2014及更早版本,大概率会出现SSL握手兼容问题。可以临时降级驱动到11.x版本测试,或者升级SQL Server到兼容版本。

4. 检查URL参数格式是否有误

确认URL里的参数没有格式错误:

  • 分号;后面别加空格(比如encrypt=true; trustServerCertificate=true里的空格会让第二个参数失效)
  • 确认trustServerCertificate拼写完全正确,别少写字母或者用缩写

5. 临时关闭SSL做测试

如果前面的方法都没效果,可以临时把encrypt设为false验证问题根源:

spring.datasource.url=jdbc:sqlserver://MY-LAPTOP;database=TL-RMDB;integratedSecurity=true;encrypt=false

要是能正常连接,说明问题确实出在SSL参数传递或驱动与服务器的SSL兼容性上,再针对性处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:03:12