Java开发日常出现的特殊错误

it2025-12-25  7

错误一


错误描述:

Clock moved backwards. Refusing to generate id for 48257037 milliseconds

代码:
import com.baomidou.mybatisplus.core.toolkit.IdWorker; Long blockId = IdWorker.getId();
代码场景:

生成唯一ID,用于标识当前线程,日志跟踪 。

错误原因:

由于系统时间回拨产生此错误

IdWorker.getId() 是高效GUID产生算法(sequence),基于Snowflake算法实现64位自增ID

由于Snowflake算法依赖系统时间,它会将当前时间与最近一次调用此算法的存入内存的系统时间比较,若当前时间小于上次调用时间(具体原因看源码),则报错

解决方法:
临时方法:重置系统时间;重启当前项目,清空内存。永久方法:更换生成唯一ID方式。如:UUID、redis生成ID等
持续更新中……
最新回复(0)