java.sql.SQLException: validateConnection false 多数据源连接问题解决


1、场景

项目中需要直连多个数据源,mysql可以,但是sqlserver提示错误

2、问题描述

16:49:59.835 [Druid-ConnectionPool-Create-329645619] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test, 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:778)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:822)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:767)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7418)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3272)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(SQLServerStatement.java:743)
        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

3、原因

Druid 与 sqlserver 驱动不兼容

4、依赖

    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.6
        
    

    
            mysql
            mysql-connector-java
            runtime
        
        
            com.microsoft.sqlserver
            mssql-jdbc
            runtime
        
     
            com.alibaba
            druid-spring-boot-starter
            1.2.8
        
       
            mysql
            mysql-connector-java
            5.1.47
        

5、解决办法

将druid-spring-boot-starter升级,1.2.8->1.2.9或更新