1.坑
- 分布式部署就需要分配不同的workId, 如果workId相同,可能会导致⽣成的id相同
- 分布式情况下,需要保证各个系统时间⼀致,如果服务器的时钟回拨,就会导致⽣成的 id 重复
2.解决方法
application.properties文件中配置wordId
#配置workId
spring.shardingsphere.sharding.tables.product_order.key-generator.props.work.id=1
雪花算法配置:
方法一:实体类配置雪花算法
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("product_order")
public class ProductOrder {
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
}
可能引发的报错:
Error creating bean with name ‘shardingDataSource’ defined in class path resource
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shardingDataSource' defined in class path resource [org/apache/shardingsphere/shardingjdbc/spring/boot/SpringBootConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'shardingDataSource' threw exception; nested exception is java.lang.IllegalArgumentException: Type is required.
at org.springframework.beans.factory.support.ConstructorResolver.instanti

最低0.47元/天 解锁文章
400

被折叠的 条评论
为什么被折叠?



