• 解决shardingsphere SQLFeatureNotSupportedException: isValid


    原因分析:
    应该是spring boot 集成 sharding jdbc 分库分表 数据库连接健康检查不通过,用的5.7的mysql,连接远程mysql8就没有此问题,在5.7上加了配置文件解决

    报下面的错误

    org.springframework.dao.InvalidDataAccessApiUsageException: ConnectionCallback; isValid; nested exception is java.sql.SQLFeatureNotSupportedException: isValid
    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:96)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:336)
    at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.isConnectionValid(DataSourceHealthIndicator.java:130)
    at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.doDataSourceHealthCheck(DataSourceHealthIndicator.java:116)
    at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.doHealthCheck(DataSourceHealthIndicator.java:100)
    at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:82)
    at org.springframework.boot.actuate.health.HealthIndicator.getHealth(HealthIndicator.java:37)
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:71)
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:39)
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:99)
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getAggregateHealth(HealthEndpointSupport.java:110)
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:96)
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getAggregateHealth(HealthEndpointSupport.java:110)
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSup

    解决方法,创建一个配置文件DataSourceHealthConfig.java
    内容为:

    package org.appcenter.app.config;
    
    
    import org.springframework.beans.factory.ObjectProvider;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration;
    import org.springframework.boot.actuate.health.AbstractHealthIndicator;
    import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator;
    import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.util.StringUtils;
    
    import javax.sql.DataSource;
    import java.util.Map;
    
    @Configuration
    public class DataSourceHealthConfig extends DataSourceHealthContributorAutoConfiguration {
        public DataSourceHealthConfig(Map<String, DataSource> dataSources, ObjectProvider<DataSourcePoolMetadataProvider> metadataProviders) {
            super(dataSources, metadataProviders);
        }
    
        @Override
        protected AbstractHealthIndicator createIndicator(DataSource source) {
            DataSourceHealthIndicator indicator = (DataSourceHealthIndicator) super.createIndicator(source);
            if (!StringUtils.hasText(indicator.getQuery())) {
                indicator.setQuery("select 1");
            }
            return indicator;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    【PG】PostgreSQL高可用方案repmgr管理之配置文件
    web表格(详解)
    RabbitMQ Demo
    PEDOT:PSS/甘油酸胆碱([Ch][Glyce])离子液体混合材料
    《算法导论》15章-动态规划 15.1 钢条切割(含有C++代码)
    vue基础概念
    这三大爆款开源项目竟出自同一个20人的小公司?
    【路径规划-TSP问题】基于遗传算法求解多起点多TSP问题附matlab代码
    学习Bootstrap 5的第六天
    自媒体账号的流量推荐减少了很多?
  • 原文地址:https://blog.csdn.net/qq_36189997/article/details/133301996