mybatis-plus
mybatis-plus copied to clipboard
雪花算法生成重复id
当前使用版本(必填,否则不予处理)
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'
给出复现demo
我描述下吧:做了个高并发入库的操作,表的id就是用的雪花算法,并发高的时候时间和机器都一样,所以重复了,大佬能给点改进建议吗?
给出复现demo
你可以看看美团雪花或者https://github.com/imadcn/idworker这种的
我也出现同样类似的情况
版本 mybatis-plus:2.3
刚看了下源码,机器id是可以设置的吧。
com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder#build
最后的那个build方法
刚看了下源码,机器id是可以设置的吧。
com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder#build
最后的那个build方法
对的,设置机器 ID 同一台机器避免多个实例一直导致重复ID