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

Spring Boot连接SQL Server时含@符号用户名报错求助

Spring Boot连接SQL Server时含@符号的用户名处理方案

SQL Server JDBC驱动会将URL中的@符号识别为用户名与服务器地址的分隔符,直接使用带@的用户名会导致解析错误。以下是可行的解决方法:

方案一:通过配置属性单独指定用户名

在application.properties或application.yml中,将用户名、密码与URL分开配置,避免URL解析逻辑干扰:

spring.datasource.url=jdbc:sqlserver://你的服务器地址:1433;databaseName=你的数据库名
spring.datasource.username=username@pc.com
spring.datasource.password=你的数据库密码

Spring会直接将用户名参数传递给驱动,不会触发@符号的拆分逻辑。

方案二:在JDBC URL中用user参数明确指定

如果要将用户名写入URL,不要放在URL开头的user@server格式里,而是用user参数单独声明:

spring.datasource.url=jdbc:sqlserver://你的服务器地址:1433;databaseName=你的数据库名;user=username@pc.com;password=你的数据库密码

这种方式下,驱动会直接读取user参数的值,不会解析@符号作为分隔符。

方案三:针对连接池的单独配置(如HikariCP)

若使用Hikari等连接池,直接配置连接池的用户名属性:

spring.datasource.hikari.username=username@pc.com
spring.datasource.hikari.password=你的数据库密码
spring.datasource.url=jdbc:sqlserver://你的服务器地址:1433;databaseName=你的数据库名

连接池会直接将用户名传递给驱动,绕开URL解析问题。

为什么你之前的尝试无效

  • username%40pc.com:SQL Server JDBC驱动对URL中的百分号编码兼容度差,无法正确解码回@符号
  • username\@pc.com:配置文件会提前解析反斜杠,实际传递给驱动的仍是username@pc.com,仍会触发拆分
  • "\"username@pc.com\"":额外的引号会被当作用户名的一部分,导致认证失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:31:03