记一次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. 【Python学习系列二十三】Scikit_Learn库降维方法(矩阵分解)-PCAFA
  2. leetcode Number of 1 Bits
  3. 树状数组c语言模板,【树状数组】Cows (POJ2481) PASCAL 解题报告
  4. 通过JConsole查看本地远程虚拟机
  5. MapReduce执行WordCount操作
  6. 真诚推荐这7个大佬的公众号,碎片化学习
  7. CSS3实现烟花特效 --web前端
  8. python中集合set,字典dict和列表list的区别以及用法
  9. Apache工具包方法——Hex.encodeHexString(byte[] data)源码浅析
  10. argb和rgb风扇的区别是什么
  11. Dojo1.11官方教程文档翻译(3.4)Dojo特效
  12. PHP基础学习第十四篇(了解和使用PHP的数据类型、常量、字符串变量、运算符)
  13. Datawhale数据分析思考与问题解决
  14. 如何对复杂网络建模所需要的数据进行预处理
  15. 工作心得之接口数据同步
  16. MacBook苹果电脑在充电中无法指纹解锁解决办法
  17. 磁盘大于16TB如何做ext4的文件系统
  18. 阿里巴巴战略投资康佳旗下易平方和KKTV ,加速抢占大屏新赛道
  19. 【win7系统怎样进去登陆界面】
  20. flutter : Failed to find assets path for “Frameworks/App.framework/flutter_assets“

热门文章

  1. 5款比价利器 让你从此不再花冤枉钱
  2. 唤醒手腕51单片机学习笔记(第1期)基本知识、LED和轻触按键
  3. 电脑店PE+CDlinux+360系统急救盘+Ubuntu+fedora+backtrack(上)(by 星空武哥)
  4. 检测与转换简答题知识点总结
  5. 关于虚拟机纯命令行centos解决web上网认证的解决方案
  6. js返回计算机ip地址吗,js获取电脑IP地址???电脑连WIFI的
  7. FH153C8 触发开关IC芯片,ON/OFF
  8. js给数组添加数据的方式/js 向数组对象中添加属性和属性值
  9. vue + cesium 洪水淹没分析完整示例
  10. 从技术迭代到实践应用,一文看透AI中台演进之路