shardingjdbc 开发问题集
1、分片键日期不能用hutool工具类转化的日期对象去查询,否则会报错
报错内容:Sharding value must implements Comparable
解决方法:由于hutool转化的日期对象DateTime没有实现Comparable接口,所以报错,采用jdk的Date类型即可
2、由于spring-cloud-starter-alibaba-nacos-discovery依赖guava20, 而shardingjdbc依赖guava18,造成版本冲突报错,故先去除在添加guava20,
报错内容:com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
解决办法:先排除sharding下guava,在添加guava20,如下所示
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- guava 由于spring-cloud-starter-alibaba-nacos-discovery依赖guava20,
而shardingjdbc依赖guava18,造成版本冲突报错,故先去除在添加guava20 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
3、shardingjdbc4.1.1没有实现isValid()方法,故spring-boot-starter-actuator在进行数据库健康检查时会报错,同时springbootAdmin监控上会发现该服务处于down状态
解决办法:
配置spring-boot-starter-actuator的参数,禁用数据库的健康检查
management.health.db.enabled=false
下一篇:
一次mongo查询不存在字段引发的事故
