开发者社区> 问答> 正文

1.2.6连接sqlserver报错 java.sql.SQLException: validate

依赖版本

com.alibaba druid-spring-boot-starter 1.2.6

sqlserver驱动版本

com.microsoft.sqlserver sqljdbc4 4.0

2021-05-13 16:57:55.328ERROR 2772 ---[eate-1931723660] com.alibaba.druid.pool.DruidDataSource :create connection SQLException, url: jdbc:sqlserver://172.28.168.172:1533;databaseName=basic_paper, errorCode 0, state null

java.sql.SQLException: validateConnection false at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1418) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1733) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2801) Caused by: java.lang.NullPointerException: null at com.microsoft.sqlserver.jdbc.SQLServerStatement.ensureSQLSyntax(SQLServerStatement.java:702) at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:728) at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(SQLServerStatement.java:662) at com.alibaba.druid.pool.vendor.MSSQLValidConnectionChecker.isValidConnection(MSSQLValidConnectionChecker.java:50) at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1398) ... 2 common frames omitted

原提问者GitHub用户WangJincheng4869

展开
收起
山海行 2023-07-05 18:05:00 314 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    这个异常通常表示数据库连接验证失败,可能是由于以下原因之一:

    数据库连接配置错误。在连接 SQL Server 数据库时,需要正确配置数据库连接字符串、用户名、密码等信息。可能是由于这些信息配置错误或者不完整导致连接验证失败。建议检查数据库连接配置是否正确,并进行相应的修正和优化。

    数据库连接权限问题。在连接 SQL Server 数据库时,需要使用具有足够权限的数据库用户。可能是由于当前连接的数据库用户没有足够的权限访问数据库导致连接验证失败。建议检查数据库用户权限是否正确,并进行相应的授权和配置。

    数据库连接中断。在连接 SQL Server 数据库时,可能会出现网络中断、超时等问题,导致连接验证失败。建议检查网络是否通畅,数据库服务器是否正常运行等,以确保能够正常访问数据库。

    2023-07-30 20:35:06
    赞同 展开评论 打赏
  • 这个错误是由于SQL Server JDBC驱动程序中的一个空指针异常导致的。这个错误通常发生在使用Druid连接池连接SQL Server数据库时。根据错误信息,可以看到SQL Server JDBC驱动程序在执行SQL语句时发生了空指针异常。这可能是由于SQL语句中存在语法错误或者数据库连接池中的连接已经被占用等原因导致的。
    检查SQL语句是否正确,确保没有语法错误或者逻辑错误。
    检查数据库连接池中的连接是否已经被占用,如果是,可以尝试释放一些连接来解决问题。
    尝试升级SQL Server JDBC驱动程序版本,有时候驱动程序的版本也可能会导致一些问题。
    如果以上方法都无法解决问题,可以尝试使用其他连接池来连接SQL Server数据库,比如Apache Commons DBUtils或者Spring JDBC连接池等。

    2023-07-09 10:09:57
    赞同 展开评论 打赏
  • 加入以下配置即可解决!

    用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。

    spring.datasource.druid.validation-query=select 'x'

    申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。

    spring.datasource.druid.test-on-borrow=false

    原回答者GitHub用户WangJincheng4869

    2023-07-06 10:43:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载