由于服务器迁移重启,应用启动后无法新增数据,错误日志:
ERROR [http-nio-8081-exec-6] o.a.c.c.C.[.[localhost].[/].[dispatcherServlet] - [DirectJDKLog.java:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Clock moved backwards. Refusing to generate id for 25323564ms] with root cause
java.lang.IllegalStateException: Clock moved backwards. Refusing to generate id for 25323564ms
at cn.hutool.core.lang.Snowflake.nextId(Snowflake.java:214)
at cn.hutool.core.lang.Snowflake.nextIdStr(Snowflake.java:247)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
查询得知由于重启了服务器,导致系统时间倒退造成 Mybatis 默认的 id 生成算法是雪花算法,时间倒退导致生成 id 抛异常。
解决方法:将系统时间修改为正确时间后,重启项目。
我这里项目是docker的java容器,直接重启java后端容器后解决问题。