在项目中集成ShardingJDBC,启动报错:ConnectionCallback; isValid; nested exception is java.sql.SQLFeatureNotSupportedException: isValid
该项目是新做的,使用较新版本的Spring Boot 2.3,数据库连接词用Hikari。
用Sharding-JDBC蛮久了,之前一直是与DBCP2或Druid,没出过什么问题。这次集成Hikari,系统虽然报错但也能正常启动,仔细看源码,问题应该出在键康检查。
在网上找到一个遇到同样问题的人,经分析是Spring Boot 2.3数据源健康检查引起。解决办法是继承 DataSourceHealthContributorAutoConfiguration 重写 createIndicator 方法
@Configuration
public class DataSourceHealthConfig extends DataSourceHealthContributorAutoConfiguration {
@Value("${spring.datasource.dbcp2.validation-query:select 1}")
private String defaultQuery;
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(defaultQuery);
}
return indicator;
}
}
参考:https://blog.csdn.net/qq_33547169/article/details/106565788
发表回复