记一次shardingsphere雪花算法无效。

我的配置如下:

spring:shardingsphere:datasource:ds:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://xxxxx:3306/zt?useUnicode=true&characterEncoding=utf-8&useSSL=falsepassword: pwdtype: com.zaxxer.hikari.HikariDataSourceusername: rootnames: dsrules:sharding:binding-tables:- zt_custom_group,zt_custom_group_wordskey-generators:snowflake:type: SNOWFLAKEnanoid:type: NANOIDsharding-algorithms:zt_custom_group-inline:props:algorithm-expression: zt_custom_group_$->{user_id % 1024}type: INLINEzt_custom_group_words-inline:props:algorithm-expression: zt_custom_group_words_$->{user_id % 1024}type: INLINEtables:zt_custom_group:actual-data-nodes: ds.zt_custom_group_$->{0..1023}key-generate-strategy:column: idkey-generator-name: snowflaketable-strategy:standard:sharding-algorithm-name: zt_custom_group-inlinesharding-column: user_idzt_custom_group_words:actual-data-nodes: ds.zt_custom_group_words_$->{0..1023}key-generate-strategy:column: idkey-generator-name: snowflaketable-strategy:standard:sharding-algorithm-name: zt_custom_group_words-inlinesharding-column: user_id

只是分表没有分库,配置了id生成策略是雪花算法SNOWFLAKE,但是在执行插入的时候还是报错id为null


org.springframework.dao.DataIntegrityViolationException:
### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null
### The error may exist in file [/Users/xiaosa/idea_project/zt/zt-core/target/classes/mybatis/ZtCustomGroupMapper.xml]
### The error may involve com.zt.core.mapper.ZtCustomGroupMapper.insert-Inline
### The error occurred while setting parameters
### SQL: insert into zt_custom_group (id, user_id, group_name,       create_time, update_time)     values (?, ?, ?,       ?, ?)
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be null
; Column 'id' cannot be null; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be nullat org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:87)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)at jdk.proxy2/jdk.proxy2.$Proxy76.insert(Unknown Source)at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93)at jdk.proxy2/jdk.proxy2.$Proxy77.insert(Unknown Source)at com.zt.core.service.impl.ZtCustomGroupServiceImpl.add(ZtCustomGroupServiceImpl.java:16)at com.zt.core.service.impl.ZtCustomGroupServiceImplTest.testAdd(ZtCustomGroupServiceImplTest.java:24)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)at java.base/java.lang.reflect.Method.invoke(Method.java:578)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id' cannot be nullat java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)at com.mysql.jdbc.Util.getInstance(Util.java:408)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1281)at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:782)at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement$2.executeSQL(ShardingSpherePreparedStatement.java:439)at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement$2.executeSQL(ShardingSpherePreparedStatement.java:435)at org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback.execute(JDBCExecutorCallback.java:95)at org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback.execute(JDBCExecutorCallback.java:75)at org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine.syncExecute(ExecutorEngine.java:135)at org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine.parallelExecute(ExecutorEngine.java:131)at org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine.execute(ExecutorEngine.java:116)at org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor.execute(JDBCExecutor.java:65)at org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor.execute(JDBCExecutor.java:49)at org.apache.shardingsphere.driver.executor.DriverJDBCExecutor.doExecute(DriverJDBCExecutor.java:156)at org.apache.shardingsphere.driver.executor.DriverJDBCExecutor.execute(DriverJDBCExecutor.java:145)at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.execute(ShardingSpherePreparedStatement.java:402)at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)at java.base/java.lang.reflect.Method.invoke(Method.java:578)at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)at jdk.proxy2/jdk.proxy2.$Proxy101.update(Unknown Source)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)at java.base/java.lang.reflect.Method.invoke(Method.java:578)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)... 37 more

经过一通排查发现是mybatis的mapper写的有问题。

  <insert id="insert" parameterType="com.zt.core.entity.ZtCustomGroup" keyProperty="id" keyColumn="id" useGeneratedKeys="true"><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Tue Oct 11 04:05:26 CST 2022.-->insert into zt_custom_group (id, user_id, group_name,create_time, update_time)values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{groupName,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})</insert>

insert时去掉id即可

  <insert id="insert" parameterType="com.zt.core.entity.ZtCustomGroup" keyProperty="id" keyColumn="id" useGeneratedKeys="true"><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Tue Oct 11 04:05:26 CST 2022.-->insert into zt_custom_group (user_id, group_name,create_time, update_time)values (#{userId,jdbcType=BIGINT}, #{groupName,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})</insert>

成功插入

shardingsphere配置id生成策略无效相关推荐

  1. java xml annotation_Annotation与XML配置ID生成策略

    最常用:native 由不同DB生成不同的策略 其次:identity.sequence 一些用:uuid ------------------------------------------ XML ...

  2. 7 种分布式全局 ID 生成策略,你更爱哪种?

    上了微服务之后,很多原本很简单的问题现在都变复杂了,例如全局 ID 这事! 最近工作中刚好用到这块内容,于是调研了市面上几种常见的全局 ID 生成策略,稍微做了一下对比,供小伙伴们参考. 当数据库分库 ...

  3. 七种分布式全局 ID 生成策略,你更爱哪种?

    上了微服务之后,很多原本很简单的问题现在都变复杂了,例如全局 ID 这事! 最近工作中刚好用到这块内容,于是调研了市面上几种常见的全局 ID 生成策略,稍微做了一下对比,供小伙伴们参考. 当数据库分库 ...

  4. [转]【分布式系统】唯一ID生成策略总结

    文章目录 全局唯一id介绍 全局唯一id特点: 常见全局唯一id生成策略 1.数据库自增长序列或字段生成id 2.UUID 3.Redis生成ID 4.zookeeper生成ID 5.Twitter的 ...

  5. hibernate id生成策略 mysql_Hibernate中ID生成策略

    四.ID生成策略 第一种:XML配置ID 通过为id元素增加generator子元素,该子元素拥有class属性.常用的class属性有: (1)increment:用于为long.short.或者i ...

  6. 【分布式系统】唯一ID生成策略总结

    文章目录 全局唯一id介绍 全局唯一id特点: 常见全局唯一id生成策略 1.数据库自增长序列或字段生成id 2.UUID 3.Redis生成ID 4.zookeeper生成ID 5.Twitter的 ...

  7. ibernate ID生成策略 小知识

    hibernate ID生成策略<generator class="assigned"></generator>,我之前知道常用的四个:native ide ...

  8. delphi 获取webbrowser文本框id内数值_分布式 ID 生成策略

    对于系统中的一组数据而言,必不可少地对应有唯一标识.简单的单体应用可以使用数据库的自增 ID 作为唯一标识.而在复杂的分布式系统中,就需要一些特定的策略去生成对应的分布式 ID. 常见的项目中 ID ...

  9. 微服务架构分布式全局唯一ID生成策略及算法

    全局唯一的 ID 几乎是所有系统都会遇到的刚需.这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义.工业上有多种策略来获取这个全局唯一的id,针对常见的几种场景,我在这里进行 ...

最新文章

  1. App上架应用市场,如何攻破安全过检难题
  2. Vue指令之v-model和双向数据绑定
  3. html画圆中有个正方形,这样画圆内接正方形,非常简单!
  4. java 十亿数据量运行速度慢_Java学习进阶之数据结构知识梳理
  5. [转载] 面试常见问题总结
  6. SQL优化工具SQLAdvisor使用(转)
  7. 计算机代表的数字,计算机中数的表示
  8. 解析机器人视觉系统的神奇之处
  9. 锤子android悬浮菜单,锤子手机Smartisan T1悬浮菜单怎么添加
  10. 2022.4.9第十三届蓝桥杯web组省赛个人题解
  11. 现代信号处理教程第二版(胡广书)学习笔记
  12. 蕴含连接词的真值表为什么这样定义?
  13. 开放流程自动化标准测试实验室花开遍地,全球巡礼—上篇
  14. 梦幻西游原服务器物品,梦幻西游:物品贱如粪土的服务器,强化石摆3万无人要...
  15. ERP-非财务人员的财务培训教(三)------公司/部门预算编制与评价
  16. python Matplotlib 绘制多个子图
  17. 2019年线上销量翻倍!立白如何用数智化刷新自己?
  18. 这些行业的生意,岂止月入十万
  19. 年度全球区块链最有影响力人物排行榜TOP10
  20. CAD图层文件(DWG)转矢量图层处理

热门文章

  1. ARP渗透与攻防(七)之Ettercap Dns劫持
  2. 深度学习之可视化ZFNet-解卷积
  3. 电脑提示vcomp140.dll无法继续执行代码(解决方法)
  4. JZ2440:busybox构建根文件系统
  5. Qt编写物联网管理平台48-特色功能设计
  6. Packet Tracer 学习笔记(一)简单使用
  7. 手机APP和PC站点接入中国银联支付
  8. Udesk API v1 使用介绍(一)
  9. 普通电脑摄像头也可以做监控系统
  10. 使用ansible自动化搭建LNMP应用平台