mybatis-plus icon indicating copy to clipboard operation
mybatis-plus copied to clipboard

雪花算法生成重复id

Open leishenglong opened this issue 2 years ago • 5 comments

当前使用版本(必填,否则不予处理)

3.4.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

数据库主键id试用雪花算法 @Transactional(rollbackFor = Exception.class) default boolean saveBatch(Collection<T> entityList) { return saveBatch(entityList, DEFAULT_BATCH_SIZE); }

重现步骤(如果有就写完整)

高并发测试

报错信息

Duplicate entry '1531830571133603843' for key 'PRIMARY'; nested exception is java.sql.BatchUpdateException: Duplicate entry '1531830571133603843'

leishenglong avatar Jun 01 '22 02:06 leishenglong

给出复现demo

miemieYaho avatar Jun 01 '22 05:06 miemieYaho

我描述下吧:做了个高并发入库的操作,表的id就是用的雪花算法,并发高的时候时间和机器都一样,所以重复了,大佬能给点改进建议吗?

给出复现demo

leishenglong avatar Jun 01 '22 07:06 leishenglong

你可以看看美团雪花或者https://github.com/imadcn/idworker这种的

miemieYaho avatar Jun 01 '22 13:06 miemieYaho

我也出现同样类似的情况

版本 mybatis-plus:2.3

xfeng-github avatar Jul 22 '22 15:07 xfeng-github

刚看了下源码,机器id是可以设置的吧。 com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder#build最后的那个build方法

CodingOX avatar Aug 01 '22 07:08 CodingOX

刚看了下源码,机器id是可以设置的吧。 com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder#build最后的那个build方法

对的,设置机器 ID 同一台机器避免多个实例一直导致重复ID

qmdx avatar Dec 16 '22 02:12 qmdx